连接数据库
在创建数据库连接之后,才能使用它来执行SQL语句操作数据。
如果您使用的是开源的JDBC驱动程序,应确保数据库参数password_encryption_type取值设置为1,如果参数值不为1,可能会出现连接失败,典型的报错信息比如:“none of the server's SASL authentication mechanisms are supported”,参见以下操作:
- 将数据库参数password_encryption_type修改为1,修改方法参见修改数据库参数。
- 新建一个数据库用户用于连接,或者重置准备使用的数据库用户的密码。
- 如果您使用的是管理员账号,参见重置密码。
- 如果是普通用户,可以先通过其他客户端工具(例如Data Studio)连接数据库后,使用ALTER USER语句来修改密码。
- 再尝试连接数据库。
需要执行以上操作的原因:
- 调整参数的原因:当前MD5算法已被证实可以人工碰撞,已严禁将之用于密码校验算法。GaussDB(DWS) 采用默认安全设计,默认禁止MD5算法的密码校验,而PostgreSQL的开源libpq通信协议恰恰使用的是MD5算法。所以需要调整密码算法参数password_encryption_type,打开MD5算法。
- 修改密码的原因:GaussDB(DWS) 中是不会存储您的密码原文的,而是存储的密码HASH摘要(默认是SHA256摘要),在密码校验时该摘要会与客户端发来的密码摘要进行比对(中间会有加盐操作)。故当您只是单纯调整了密码算法策略时,数据库是无法还原您的密码进而再生成MD5的摘要值的,必须要求您手动修改一次密码或者创建一个新用户,这时新的密码将会采用您设置的HASH算法进行摘要存储,用于下次连接认证。
函数原型
JDBC提供了三个方法,用于创建数据库连接。
- DriverManager.getConnection(String url);
- DriverManager.getConnection(String url, Properties info);
- DriverManager.getConnection(String url, String user, String password);
参数
参数 |
描述 |
---|---|
url |
gsjdbc4.jar数据库连接描述符。格式如下:
说明:
使用gsjdbc200.jar时,将“jdbc:postgresql”修改为“jdbc:gaussdb”
|
info |
数据库连接属性。常用的属性如下:
|
user |
数据库用户。 |
password |
数据库用户的密码。 |
关闭连接
在使用数据库连接完成相应的数据操作后,需要关闭数据库连接。
关闭数据库连接可以直接调用其close方法即可。如:conn.close()
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//以下用例以gsjdbc4.jar为例,如果要使用gsjdbc200.jar,请替换驱动类名(将代码中的“org.postgresql”替换成“com.huawei.gauss200.jdbc”)与连接URL串前缀(将“jdbc:postgresql”替换为“jdbc:gaussdb”)。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。 public static Connection GetConnection(String username, String passwd) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?currentSchema=test"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch (ClassNotFoundException e ){ e.printStackTrace(); return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL, username, passwd); System.out.println("Connection succeed!"); } catch (SQLException e) { e.printStackTrace(); return null; } return conn; } |