获取数据库连接
📄字数 3.4K
👁️阅读量 加载中...
使用 DriverManager
DriverManager 支持三种连接虚谷数据库的方式:
getConnection(String url)
参数说明:
- url:访问数据库的URL路径
示例: 下面的代码利用 getConnection 方法创建与虚谷数据库的连接,并返回连接对象。
java
public Connection getConnection(){
Connection con=null;
try{
//注册数据库驱动
Class.forName("com.xugu.cloudjdbc.Driver");
//定义连接数据库的url
String url = "jdbc:xugu://localhost:5138/db?user=user1&password=pwd";
//获取数据库连接
con = DriverManager.getConnection(url);
System.out.println("数据库连接成功!");
}catch(Exception e){
e.printStackTrace();
}
//返回一个连接
return con;
}
getConnection(String url,String user,String password)
参数说明:
- url:访问数据库的 URL 路径。
- user:数据库连接用户名。
- password:数据库连接用户密码。
示例: 下面的代码利用 getConnection 方法创建与虚谷数据库的连接,并返回连接对象。
java
private Connection con;
private String user = "user1"; //定义连接数据库的用户名
private String password = "pwd"; //定义连接数据库的密码
private String className = "com.xugu.cloudjdbc.Driver";//定义JDBC驱动
private String url = "jdbc:xugu://localhost:5138/db"; //定义url连接串
public Connection getConnection(){
try{
Class.forName(className);//加载数据库驱动
System.out.println("数据库驱动加载成功!");
con = DriverManager.getConnection(url,user,password); //连接数据库
System.out.println("成功地获取数据库连接!");
}catch(Exception e){
System.out.println("创建数据库连接失败!");
con = null;
e.printStackTrace();
} finally {
If(conn != null){
//释放连接资源
conn.close();
}
}
return con;
}
getConnection(String url,Properties info)
参数说明:
- url:访问数据库的 URL 路径。
- info:一个持久的属性集对象,包括 user 和 password 等属性。
示例: 下面的代码利用 getConnection 方法创建与虚谷数据库的连接,并返回连接对象。
java
public Connection getConnection(){
Connection con = null; //定义数据库连接对象
Properties info = new Properties(); //定义Properties对象
info.setProperty("user","user1"); //设置Properties对象属性
info.setProperty("password","pwd");
try{
//注册数据库驱动
Class.forName("com.xugu.cloudjdbc.Driver");
//test为数据库名称
String url = "jdbc:xugu://localhost:5138/db";
//获取连接数据库的Connection对象
con = DriverManager.getConnection(url,info);
System.out.println("数据库连接成功!");
}catch(Exception e){
e.printStackTrace();
}
//返回一个连接
return con;
}
使用 Datasource 数据源
示例:获取 Datasource 对象
java
public DataSource getDatasource(){
XgDataSource ds = new XgDataSource();
//设置数据库登录串
ds.setUrl("jdbc:xugu://127.0.0.1:5138/SYSTEM");
//设置数据库服务器
ds.setHostName("127.0.0.1");
//设置数据库端口号
ds.setPort(5138);
//指定数据库
ds.setDatabaseName("SYSTEM");
//设置数据库用户名
ds.setUser("SYSDBA");
//设置数据库登录密码
ds.setPassword("SYSDBA");
//设置最大等待时间
ds.setMaxWaitTime(60000);
//设置最大活动连接数
ds.setMaxActive(10);
//连接池中最少连接数
ds.setMinIdle(5);
return ds;
}
在com.xugu.pool.XgDataSource类中通过setXX()方法设置数据源的连接属性,若未指定则使用以下默认属性值:
- 数据库服务器地址:localhost
- 连接数据库:SYSTEM
- 访问端口号:5138
- 访问用户名:GUEST
- 用户密码:GUEST
- URL默认连接串:jdbc:xugu://127.0.0.1:5138/SYSTEM?user=GUEST&password=GUEST&version=110。
数据源建立后,可通过调用XgDataSource类中的getConnection()和getConnection(String username,String password)方法获取数据库连接。
使用连接池创建连接
连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、管理策略,该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。
说明
当应用程序使用完数据库连接调用连接关闭方法时,该连接并未销毁,而是被归还给连接池等待下次继续调用。
XuguDB-JDBC实现连接池服务所提供的接口类如下:
XuguDB-JDBC | JDBC |
---|---|
XgDataSource | javax.sql.DataSource |
XgPooledConnection | javax.sql.PooledConnection |
XgConnectionPoolDataSource | javax.sql.ConnectionPoolDataSource |
XgConnectionEventListener | javax.sql.ConnectionEventListener |
XgConnectionEvent | javax.sql.ConnectionEvent |
虚谷数据库连接池中的连接均是通过数据源建立的,故而XuguConnectionPoolDataSource继承了com.xugu.pool.XuguDataSource类。用户亦可通过XuguConnectionPoolDataSource对象设置数据源属性和连接池属性:
java
//最小连接数
setMinIdle(int min);
//最大连接数
setMaxActive(int max);
//登录空闲时间
setLoginTimeout(int time);
//最大等待连接超时
setMaxWaitTime(long waitTime);
说明
setLoginTimeout()和setMaxWaitTime()方法中参数单位为毫秒,其他方法中参数单位为秒。
示例: 创建一个XuguDB-JDBC连接池,并通过连接池获取虚谷数据库连接。
java
public PooledConnection getXgPooledConnection() throws SQLException {
XgConnectionPoolDataSource CPDSource = new XgConnectionPoolDataSource();
CPDSource.setUrl("jdbc:xugu://localhost:5138/SYSTEM");
CPDSource.setHostName("localhost");
CPDSource.setPort(5138);
CPDSource.setDatabaseName("SYSTEM");
CPDSource.setUser("SYSDBA");
CPDSource.setPassword("SYSDBA");
CPDSource.setMaxActive(10);
CPDSource.setMinIdle(5);
CPDSource.setLoginTimeout(3000);
CPDSource.setMaxWaitTime(3000);
XgPooledConnection Pconn = (XgPooledConnection)CPDSource.getPooledConnection();
return Pconn;
}