更新时间:2025-08-19 GMT+08:00
分享

具体步骤

  1. 创建Connection对象,与数据库建立连接。

    连接串常用参数推荐如下,具体设置方法可参考《开发指南》中“应用程序开发教程 > 基于JDBC开发 > 开发步骤 > 连接数据库 > 连接参数参考”章节。

    • connectTimeout:用于连接服务器操作系统的超时值,单位为秒。当JDBC与数据库建立TCP连接的时间超过此值,则连接断开。根据网络情况进行配置。默认值:0,推荐值:2。
    • socketTimeout:用于socket读取操作的超时值,单位为秒。如果从服务器读取数据流所花费的时间超过此值,则连接关闭。如果不配置该参数,在数据库进程异常情况下,会导致客户端出现长时间等待,建议根据业务可以接受的SQL执行时间进行配置。默认值:0,无推荐值。
    • connectionExtraInfo:表示驱动是否将当前驱动的部署路径、进程属主用户以及url连接配置信息上报到数据库。默认值:false,推荐值:true。
    • logger:应用如果使用第三方日志框架记录日志信息,推荐使用实现slf4j接口的第三方日志框架记录JDBC日志,方便异常定位。使用了第三方日志框架的推荐值:Slf4JLogger。
      String url = "jdbc:gaussdb://$ip:$port/database?connectTimeout=xx&socketTimeout=xx&connectionExtraInfo=true&logger=Slf4JLogger&autoBalance=true"
      Connection conn = DriverManager.getConnection("url",userName,password);

  2. 连接开启事务。

    设置自动提交为false后,JDBC内部在执行查询时会预先向数据库下发“BEGIN”主动开启事务。
    conn.setAutoCommit(false);

  3. 创建PreparedStatement对象,并且设置数据库每次返回的结果行数。

    使用setFetchSize方法设置语句级的每次返回结果行数,如果连接串中配置了fetchsize,以setFetchSize方法的值为准。
    String selectSql = "select * from tab_test";
    PreparedStatement preparedStatement = conn.prepareStatement(selectSql);
    preparedStatement.setFetchSize(20);

  4. 执行查询,获取结果集。

    ResultSet resultSet = preparedStatement.executeQuery();

  5. 结果集处理,查看表的第一列数据。

    while (resultSet.next()) {
        int id = resultSet.getInt(1);
        System.out.println("row:" + resultSet.getRow() + ",id :" + id);  
    }

  6. 获取结果集列数和列的类型等元信息。

    从executeQuery返回的resultSet中获取元数据信息。
    ResultSetMetaData metaData = resultSet.getMetaData();
    System.out.println("结果列:" + metaData.getColumnCount());
    System.out.println("类型编号:" + metaData.getColumnType(1));
    System.out.println("类型名:" + metaData.getColumnTypeName(1));
    System.out.println("列名:" + metaData.getColumnName(1));

  7. 关闭资源。

    使用使用try-with-resources打开的文件资源会自动关闭。
    try (Connection conn = getConnection(); PreparedStatement preparedStatement = conn.prepareStatement(selectSql))

  8. 【可选】异常处理。

    在程序运行中需要使用try-catch模块对Exception做异常处理,根据自身业务在异常处理逻辑部分添加对异常的处理逻辑。
    try {
    // 业务代码
    } catch (Exception e) {
    // 异常处理逻辑
    }

相关文档