Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


获取数据库连接

📄字数 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-JDBCJDBC
XgDataSourcejavax.sql.DataSource
XgPooledConnectionjavax.sql.PooledConnection
XgConnectionPoolDataSourcejavax.sql.ConnectionPoolDataSource
XgConnectionEventListenerjavax.sql.ConnectionEventListener
XgConnectionEventjavax.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;
}