GaussDB-使用JDBC连接数据库
GaussDB-使用JDBC连接数据库
JDBC(Java Database Connectivity,java数据库连接)是用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。 GaussDB库提供了对JDBC 4.2特性的支持,需要使用JDK1.8版本编译程序代码,不支持JDBC桥接ODBC方式。
前提条件
计算机已安装Java JDK8版本。
获取驱动包
在管理控制台下载对应的软件包。
JDBC包
包名为GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Jdbc.tar.gz。
解压后JDBC的驱动jar包:
- gaussdbjdbc.jar:主类名为“com.huawei.gaussdb.jdbc.Driver”,数据库连接的url前缀为“jdbc:gaussdb”,推荐使用此驱动包。本章的Java代码示例默认使用gaussdbjdbc.jar包。
- gscejdbc.jar:主类名为“com.huawei.gaussdb.jdbc.Driver”,数据库连接的url前缀为“jdbc:gaussdb”,此驱动包打包了密态数据库需要加载的加解密相关的依赖库,密态场景推荐使用此驱动包。目前仅支持EulerOS操作系统。
- gaussdbjdbc-JRE7.jar:主类名为“com.huawei.gaussdb.jdbc.Driver”,数据库连接的url前缀为“jdbc:gaussdb”,在JDK1.7环境使用gaussdbjdbc-JRE7.jar包。
- 使用gscejdbc.jar驱动包时,需要先设置环境变量LD_LIBRARY_PATH。具体使用方式见《特性指南》中“设置密态等值查询 > 使用JDBC操作密态数据库”章节。
- 在JDK1.8环境中使用gaussdbjdbc.jar,不推荐使用gaussdbjdbc-JRE7.jar。
- 其他JDBC的jar包介绍请参考《开发指南》中“应用程序开发教程 > JDBC兼容性包”章节。
驱动类
在创建数据库连接之前,需要加载数据库驱动类“com.huawei.gaussdb.jdbc.Driver”。
- 由于GaussDB在JDBC的使用上与PG的使用方法保持兼容,所以同时在同一进程内使用两个JDBC驱动的时候,可能会造成类名冲突。
- 本版本JDBC不再支持IAM认证功能。
- GaussDB JDBC驱动主要做了以下特性的增强:
- 支持SHA256加密方式登录。
- 支持对接实现sf4j接口的第三方日志框架。
- 支持连接级别的分布式负载均衡。
- 支持容灾切换。
环境类
客户端需配置JDK1.8。JDK是跨平台的,支持Windows、Linux等多种平台,下面以Windows为例,介绍JDK配置流程:
- DOS窗口(windows下的命令提示符)输入“java -version”,查看JDK版本,确认为JDK1.8版本。如果未安装JDK,请下载安装包并安装。
- 右键单击“我的电脑”,选择“属性”。
- 在“系统”页面左侧导航栏单击“高级系统设置”。
- 在“系统属性”页面,“高级”页签上单击“环境变量”。
- 在“环境变量”页面上,“系统变量”区域单击“新建”或“编辑”,设置如下变量名和变量值。变量说明如表1所示。
表1 变量说明 变量名
操作
变量值
JAVA_HOME
- 若存在,则单击“编辑”。
- 若不存在,则单击“新建”。
JAVA的安装目录。
例如:C:\Program Files\Java\jdk1.8.0_131。
Path
单击“编辑”。
CLASSPATH
单击“新建”。
%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。
- 单击“确定”,并依次关闭各窗口。
加载驱动
在创建数据库连接之前,需要先加载数据库驱动程序。
- 在代码中创建连接之前任意位置隐含装载:Class.forName("com.huawei.gaussdb.jdbc.Driver")
- 在JVM启动时参数传递:java -Djdbc.drivers=com.huawei.gaussdb.jdbc.Driver jdbctest
上述jdbctest为测试用例程序的名称。
函数原型
- DriverManager.getConnection(String url)
- DriverManager.getConnection(String url, Properties info)
- DriverManager.getConnection(String url, String user, String password)
参数
|
参数 |
描述 |
|---|---|
|
url |
gaussdbjdbc.jar数据库连接描述符。 host为服务器名称或IPv4时,格式如下:
host为IPv6时,格式如下:
说明:
|
|
info |
info常用属性详情请参见《开发指南》中“应用程序开发教程>基于JDBC开发>连接数据库”章节参数说明。 |
|
user |
数据库用户。 |
|
password |
数据库用户的密码。 |
uppercaseAttributeName参数开启后,如果数据库中有小写、大写和大小写混合的元数据,则只能查询出小写部分的元数据,并以大写的形式输出。使用前请务必确认元数据的存储是否全为小写以避免数据出错。
示例
示例1:连接数据库
// 以下用例以gaussdbjdbc.jar为例。
// 以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。
public static Connection getConnect(String username, String passwd)
{
// 驱动类。
String driver = "com.huawei.gaussdb.jdbc.Driver";
// 数据库连接描述符。
String sourceURL = "jdbc:gaussdb://$ip:$port/database";
Connection conn = null;
try
{
// 加载驱动。
Class.forName(driver);
}
catch( Exception e )
{
e.printStackTrace();
return null;
}
try
{
// 创建连接。
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return conn;
}
|
常用参数详细请见《开发指南》中“应用程序开发教程>基于JDBC开发>JDBC常用参数参考”。
示例3:使用流式读功能
// 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全。
// 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
// 建立连接。
public static Connection getConnection(String username, String passwd) {
String driver = "com.huawei.gaussdb.jdbc.Driver";
String sourceURL = "jdbc:gaussdb://$ip:$port/database?enableStreamingQuery=true";
Connection conn = null;
try {
// 加载驱动。
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
return null;
}
try {
// 创建连接。
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
} catch (Exception e) {
e.printStackTrace();
return null;
}
return conn;
}
// 执行普通SQL语句,创建t_user表。
public static void CreateTable(Connection conn) {
Statement stmt = null;
try {
stmt = conn.createStatement();
// 执行普通SQL语句。
stmt.executeUpdate("DROP TABLE IF EXISTS t_user");
stmt.executeUpdate("CREATE TABLE t_user(id int, name VARCHAR(20));");
stmt.close();
} catch (SQLException e) {
if (stmt != null) {
try |
