
# 具体步骤
1. 创建Connection对象，与数据库建立连接。 
   连接串常用参数推荐如下，具体设置方法可参考《开发指南》中"应用程序开发教程 \> 基于JDBC开发 \> 开发步骤 \> 连接数据库 \> 连接参数参考"章节。
   - connectTimeout：用于连接服务器操作系统的超时值，单位为秒。当JDBC与数据库建立TCP连接的时间超过此值，则连接断开。根据网络情况进行配置。默认值：0，推荐值：2。
   
   - socketTimeout：用于socket读取操作的超时值，单位为秒。如果从服务器读取数据流所花费的时间超过此值，则连接关闭。如果不配置该参数，在数据库进程异常情况下，会导致客户端出现长时间等待，建议根据业务可以接受的SQL执行时间进行配置。默认值：0，无推荐值。
   
   - connectionExtraInfo：表示驱动是否将当前驱动的部署路径、进程属主用户以及url连接配置信息上报到数据库。默认值：false，推荐值：true。
   
   - logger：应用如果使用第三方日志框架记录日志信息，推荐使用实现slf4j接口的第三方日志框架记录JDBC日志，方便异常定位。使用了第三方日志框架的推荐值：Slf4JLogger。
   
   - autoBalance：是否开启负载均衡建连。默认值：false，推荐值：true，表示采用轮询的负载均衡策略。
     ```
     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(3);
   ```
   
   
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) {
   // 异常处理逻辑
   }
   ```
   
   
 
