OceanBase Connector/J 使用方法


本文介绍了 OceanBase 数据库的 JDBC 驱动:oceanbase-client 和 MySQL 官方 JDBC 驱动:mysql-connector-Java 的使用说明和配置方法。

推荐使用 OceanBase 数据库的 JDBC 驱动:oceanbase-client。

连接 MySQL 租户也可以使用 MySQL 官方 JDBC 驱动:mysql-connector-Java。推荐使用 5.1.30 和 5.1.40 版本,其他版本可能存在兼容问题。

  注意
  • oceanbase-client 完全兼容 MySQL JDBC 的使用方式,且可以自动识别 OceanBase 的运行模式是 MySQL 还是 Oracle,因为其在协议层兼容这两种模式。

  • mysql-connector-Java 只支持 MySQL 运行模式。

oceanbase-client 使用说明

连接串的前缀需要设置为 jdbc:oceanbase ,其他部分的使用方式与原生的 MySQL 使用方式保持一致。

  注意

1.0.9 版本的 oceanbase-client 的驱动类名为:com.alipay.oceanbase.obproxy.mysql.jdbc.Driver。后续版本驱动类名改为:com.alipay.oceanbase.jdbc.Driver。

 

代码示例如下所示:

  String url = "jdbc:oceanbase://xxx.xxx.xxx.xxx:2883/SYS?useUnicode=true&characterEncoding=utf-8";              //IP地址:OBProxy端口号/数据库名
  String username = "SYS@test1#obtest";                                                                          //用户名@租户名#集群名称
  String password = "test";                                                                                      //密码
  Connection conn = null;                                                                                         
  try {                                                                                                           
      Class.forName("com.alipay.oceanbase.obproxy.mysql.jdbc.Driver");                                             //驱动类名
      conn = DriverManager.getConnection(url, username, password);
      PreparedStatement ps = conn.prepareStatement("select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;");
      ResultSet rs = ps.executeQuery();
      rs.next();
      System.out.println("sysdate is:" + rs.getString(1));
      rs.close();
      ps.close();
  } catch (Exception e) {
      e.printStackTrace();
  } finally {
      if (null != conn) {
          conn.close();
      }
  }

mysql-connector-Java 使用说明

连接串的前缀需要设置为 jdbc:mysql,驱动类名为:com.mysql.jdbc.Driver。

代码示例如下所示:

String url = "jdbc:mysql://xxx.xxx.xxx.xxx:2883/hr?useUnicode=true&characterEncoding=utf-8";                    //IP地址:OBProxy端口号/数据库名
String username = "root@test2#obtest";                                                                          //用户名@租户名#集群名称
String password = "test";                                                                                       //密码
Connection conn = null;
try {
    Class.forName("com.mysql.jdbc.Driver");                                                                       //驱动类名
    conn = DriverManager.getConnection(url, username, password);
    PreparedStatement ps = conn.prepareStatement("select date_format(now(),'%Y-%m-%d %H:%i:%s');");
    ResultSet rs = ps.executeQuery();
    rs.next();
    System.out.println("sysdate is:" + rs.getString(1));
    rs.close();
    ps.close();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (null != conn) {
        conn.close();
    }
}

JDBC 驱动实践

下述表格中展示了 JDBC 中几个必须要设置的重要参数。均可以设置到连接池的 ConnectionProperties 中,或者 JdbcURL 上:

参数

说明

推荐值

readTimeout

网络读超时时间,如果不设置默认是 0,使用 OS 默认超时时间。

5000 ms

connectTimeout

链接建立超时时间,如果不设置默认是 0,使用 OS 默认超时时间。

500 ms

应用连接池配置

将应用和数据库连接进行业务操作,建议使用连接池。如果是 Java 程序,推荐使用 Druid 连接池。配置示例如下所示:


    
    
    
    
    
    
                                                                           //initialSize/minIdle/maxActive视业务规模设置
    
    
    
    
    
    
    
    
    
                                                   //找真实的、记录少的业务表用作查询探测语句
    
    
    
    
    
    

更多信息

有关 OceanBase Connector/J 的详细介绍和使用方法,请参见 《 OceanBase Connector/J 》。