更新时间:2025-08-19 GMT+08:00
具体步骤
- 创建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);
- 连接开启事务。
设置自动提交为false后,JDBC内部在执行查询时会预先向数据库下发“BEGIN”主动开启事务。
conn.setAutoCommit(false);
- 创建PreparedStatement对象,并且设置数据库每次返回的结果行数。
使用setFetchSize方法设置语句级的每次返回结果行数,如果连接串中配置了fetchsize,以setFetchSize方法的值为准。
String selectSql = "select * from tab_test"; PreparedStatement preparedStatement = conn.prepareStatement(selectSql); preparedStatement.setFetchSize(20);
- 执行查询,获取结果集。
ResultSet resultSet = preparedStatement.executeQuery();
- 结果集处理,查看表的第一列数据。
while (resultSet.next()) { int id = resultSet.getInt(1); System.out.println("row:" + resultSet.getRow() + ",id :" + id); }
- 获取结果集列数和列的类型等元信息。
从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));
- 关闭资源。
使用使用try-with-resources打开的文件资源会自动关闭。
try (Connection conn = getConnection(); PreparedStatement preparedStatement = conn.prepareStatement(selectSql))
- 【可选】异常处理。
在程序运行中需要使用try-catch模块对Exception做异常处理,根据自身业务在异常处理逻辑部分添加对异常的处理逻辑。
try { // 业务代码 } catch (Exception e) { // 异常处理逻辑 }
父主题: 操作步骤