OceanBaseConnectorJ使⽤⽅法
本⽂介绍了 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 的驱动类名为:sql.jdbc.Driver。后续版本驱动类名改为:
anbase.jdbc.Driver。
代码⽰例如下所⽰:
String url = "jdbc:oceanbase://x:2883/SYS?useUnicode=true&characterEncoding=utf-8";              //IP地址:OBProxy端⼝号/数据库名
String username = "SYS@test1#obtest";                                                                          //⽤户名@租户名#集名称
String password = "test";                                                                                      //密码
Connection conn = null;
try {
Class.forName("sql.jdbc.Driver");                                            //驱动类名
conn = Connection(url, username, password);
PreparedStatement ps = conn.prepareStatement("select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;");
ResultSet rs = ps.executeQuery();
<();
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,驱动类名为:sql.jdbc.Driver。
代码⽰例如下所⽰:
String url = "jdbc:mysql://x:2883/hr?useUnicode=true&characterEncoding=utf-8";                    //IP地址:OBProxy端⼝号/数据库名
String username = "root@test2#obtest";                                                                          //⽤户名@租户名#集名称
String password = "test";                                                                                      //密码
Connection conn = null;
try {
Class.forName("sql.jdbc.Driver");                                                                      //驱动类名
conn = Connection(url, username, password);
PreparedStatement ps = conn.prepareStatement("select date_format(now(),'%Y-%m-%d %H:%i:%s');");
ResultSet rs = ps.executeQuery();
<();
System.out.println("sysdate is:" + rs.getString(1));
rs.close();
ps.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != conn) {
conn.close();
}
}java的jdbc连接数据库
JDBC 驱动实践
下述表格中展⽰了 JDBC 中⼏个必须要设置的重要参数。均可以设置到连接池的 ConnectionProperties 中,或者 JdbcURL 上:参数说明推荐值
readTimeout⽹络读超时时间,如果不设置默
认是 0,使⽤ OS 默认超时时间。
5000 ms
connectTimeout 链接建⽴超时时间,如果不设置
默认是 0,使⽤ OS 默认超时时
间。
500 ms
应⽤连接池配置
将应⽤和数据库连接进⾏业务操作,建议使⽤连接池。如果是 Java 程序,推荐使⽤ Druid 连接池。配置⽰例如下所⽰:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="sql.jdbc.Driver" />
<!-- 基本属性 URL、user、password -->
<property name="url" value="jdbc:mysql://ip:port/db?socketTimeout=30000&connectTimeout=3000" />
<property name="username" value="{user}" />
<property name="password" value="{password}" />
<!-- 配置初始化⼤⼩、最⼩、最⼤ -->
<property name="maxActive" value="4" />                                                                      //initialSize/minIdle/maxActive视业务规模设置
<property name="initialSize" value="2" />
<property name="minIdle" value="2" />
<!-- 获取连接等待超时的时间,单位是毫秒 -->
<property name="maxWait" value="1000" />
<!-- 间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- ⼀个连接在池中最⼩空闲的时间,单位是毫秒-->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 检测连接是否可⽤的 SQL -->
<property name="validationQuery" value="SELECT foo FROM bar" />                                              //真实的、记录少的业务表⽤作查询探测语句    <!-- 是否开启空闲连接检查 -->
<property name="testWhileIdle" value="true" />
<!-- 是否在获取连接前检查连接状态 -->
<property name="testOnBorrow" value="false" />
<!-- 是否在归还连接时检查连接状态 -->
<property name="testOnReturn" value="false" />
</bean>
更多信息
有关 OceanBase Connector/J 的详细介绍和使⽤⽅法,请参见《 OceanBase Connector/J 》。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。