• 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 连接池。配置示例如下所示:

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <!-- 基本属性 URL、user、password -->
        <property name="url" value="jdbc:mysql://ip:port/db?socketTimeout=30000&amp;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 》。

  • 相关阅读:
    【WPF】wpf image控件加载网络图片不显示问题,
    【VS】vs修改大小写快捷键
    【C#】菜单功能,将剪贴板JSON内容或者xml内容直接粘贴为类
    【异常】调用的目标发生了异常
    【MySQL】函数IFNULL、设置默认时间
    【Kindle】pdf转mobi适合kindle查看格式
    【WPF】中的文字修饰——上划线,中划线,基线与下划线
    vscode使用Eslint + prettier + beautify 格式化vue 代码不换行
    Office文件转PDF
    MSSQL同步刷新视图字段长度和源表保持一致
  • 原文地址:https://www.cnblogs.com/hushaojun/p/15922706.html
Copyright © 2020-2023  润新知