
# 以非加密方式连接
JDBC以非加密方式连接数据库，首先要加载驱动，然后再创建数据库连接。因此本章节主要介绍加载驱动方式、创建数据库连接的接口、采用不同接口进行非加密连接。
#### 加载驱动方式介绍
加载驱动（以opengaussjdbc.jar为例）有两种方法：
- 在代码中创建连接之前在任意位置装载：
  ```
  Class.forName("com.huawei.opengauss.jdbc.Driver");
  ```
  
- 在JVM启动时参数传递，指定驱动名称，适用于DOS窗口或者Linux上执行Java代码。jdbctest为测试用例程序的名称。
  ```
  java -Djdbc.drivers=com.huawei.opengauss.jdbc.Driver jdbctest;
  ```
  ![](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - 当使用gsjdbc4.jar时，上面的Driver类名相应修改为"org.postgresql.Driver"。
  
  - 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容，所以同时在同一进程内使用两个JDBC的驱动的时候，可能会造成类名冲突。
  
  - 相比于PG驱动，GaussDB JDBC驱动主要做了以下特性的增强：
    - 支持SHA256加密方式登录。
    
    - 支持对接实现sf4j接口的第三方日志框架。
    
    - 支持容灾切换。
     
    
 
#### 创建数据库连接的接口介绍
JDBC提供了三种接口，用于创建数据库连接。url、info、user、password参数描述，请参见[表1]。
接口一：DriverManager.getConnection(String url)。该方式需要把数据库用户名、密码写在url中，有一定的安全风险，因此不推荐使用。
接口二：DriverManager.getConnection(String url, String user, String password)。具体请参见[采用接口二连接数据库]。
接口三：DriverManager.getConnection(String url, Properties info)。具体请参见[采用接口三连接数据库]。
 表1数据库连接参数 
| 参数       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|
| url      | opengaussjdbc.jar数据库连接描述符。格式如下： - jdbc:opengauss:  - jdbc:opengauss:database  - jdbc:opengauss://host/database  - jdbc:opengauss://host:port/database  - jdbc:opengauss://host:port/database?param1=value1\&param2=value2  - jdbc:opengauss://host1:port1,host2:port2/database?param1=value1\&param2=value2   说明： - 使用gsjdbc200.jar时，将"jdbc:opengauss"修改为"jdbc:gaussdb"  - database为要连接的数据库名称。数据库名称缺省则与用户名一致。  - host为数据库服务器名称或IP地址。 由于安全原因，数据库主节点禁止数据库内部其他节点无认证接入。如果要在数据库内部访问数据库主节点，请将JDBC程序部署在数据库主节点所在机器，host使用"127.0.0.1"。否则可能会出现"FATAL: Forbid remote connection with trust method!"错误。 建议业务系统单独部署在数据库外部，否则可能会影响数据库运行性能。 缺省情况下，连接服务器为localhost。   - port为数据库服务器端口。 缺省情况下，会尝试连接到5431端口的database。   - param为参数名称，即数据库连接属性。参数可以配置在url中，以"?"开始配置，使用"="给参数赋值，使用"\&"作为不同参数的间隔。  - value为参数值，即数据库连接属性值。  - 连接时需配置connectTimeout、socketTimeout，如果未配置，默认为0，即不会超时。在DN与客户端出现网络故障时，客户端一直未收到DN侧ACK确认报文，会启动超时重传机制，不断地进行重传。当重传次数达到默认的15次后才会报超时错误，会导致RTO时间很高。  - 建议使用JDBC标准接口建立连接时，确保url格式的合法性，不合法的url会导致连接失败，且报错信息中包含原始url字符串，可能造成敏感信息泄露。  - url中不允许配置密码、凭证等敏感信息，建议通过Properties连接属性来设置敏感信息，参见[采用接口三连接数据库]。   |
| info     | 数据库连接属性。全量参数请参见[连接参数参考](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-1509.html#ZH-CN_TOPIC_0000002235338725)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| user     | 数据库用户。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| password | 数据库用户的密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
 #### 采用接口二连接数据库
以下以opengaussjdbc.jar为例，使用DriverManager.getConnection(String url, String user, String password)接口创建数据库连接，步骤如下：
1. 导入java.sql.Connection和java.sql.DriverManager。 
   java.sql.Connection是数据库连接接口，通过java.sql.DriverManager的getConnection()方法让应用程序连接到数据库。此外，用户需要根据实际的应用场景，再导入其他的接口和类，具体请参见[JDBC接口参考](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-0081.html#ZH-CN_TOPIC_0000002235338741)。
   ```
   import java.sql.Connection;
   import java.sql.DriverManager;
   ```
   
   
2. 指定数据库sourceURL（$ip、$port、database需要用户自行修改）、用户名和密码。 
   用户名和密码直接写到代码中有很大的安全风险，建议在环境变量中存放。
   ```
   String sourceURL = "jdbc:opengauss://$ip:$port/database";
   String userName = System.getenv("EXAMPLE_USERNAME_ENV");
   String password = System.getenv("EXAMPLE_PASSWORD_ENV");
   ```
   
   
3. 加载驱动。 
   1. 在代码运行工具（如IDE）中添加opengaussjdbc.jar包。
   
   2. 执行以下命令加载数据库驱动程序"com.huawei.opengauss.jdbc.Driver"。
      ```
      String driver = "com.huawei.opengauss.jdbc.Driver";
      Class.forName(driver);
      ```
      
   
   
   
   
4. 创建数据库连接。 
   调用DriverManager.getConnection(String url, String user, String password)，进行数据库连接。
   ```
   Connection conn = DriverManager.getConnection(sourceURL, userName, password);
   ```
   
   
 
 #### 采用接口三连接数据库
以下以opengaussjdbc.jar为例，使用DriverManager.getConnection(String url, Properties info)接口创建数据库连接，步骤如下：
1. 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 
   java.util.Properties的setProperty()方法，用于设置Properties对象的属性值。此外，用户需要根据实际的应用场景，再导入其他的接口和类，具体请参见[JDBC接口参考](https://support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-42-0081.html#ZH-CN_TOPIC_0000002235338741)。
   ```
   import java.sql.Connection;
   import java.sql.DriverManager;
   import java.util.Properties;
   ```
   
   
2. 指定数据库sourceURL（$ip、$port、database需要用户自行修改）、用户名和密码。 
   用户名和密码直接写到代码中有很大的安全风险，建议在环境变量中存放。
   ```
   String sourceURL = "jdbc:opengauss://$ip:$port/database";
   String userName = System.getenv("EXAMPLE_USERNAME_ENV");
   String password = System.getenv("EXAMPLE_PASSWORD_ENV");
   ```
   
   
3. 创建Properties对象，并将userName和password设置为该对象的属性值。 
   ```
   Properties info = new Properties();
   info.setProperty("user", userName);
   info.setProperty("password", password);
   ```
   
   
4. 加载驱动。 
   1. 在代码运行工具（如IDE）中添加opengaussjdbc.jar包。
   
   2. 执行以下命令加载数据库驱动程序"com.huawei.opengauss.jdbc.Driver"。
   
   
   ```
   String driver = "com.huawei.opengauss.jdbc.Driver";
   Class.forName(driver);
   ```
   
   
5. 创建数据库连接。 
   调用DriverManager.getConnection(String url, Properties info)，进行数据库连接。
   ```
   Connection conn = DriverManager.getConnection(sourceURL, info);
   ```
   
   
 
