连接数据库
在创建数据库连接之后,才能使用它来执行SQL 语句操作数据。
函数原型
JDBC 提供了三个方法,用于创建数据库连接。
DriverManager.getConnection(String url);
DriverManager.getConnection(String url, Properties info);
DriverManager.getConnection(String url, String user, String password);
参数
表6-2 数据库连接参数
参数
描述
info
数据库连接属性(所有属性大小写敏感)。常用的属性如下:
PGDBNAME:String 类型。表示数据库名称。(URL 中无需配置该参数,
自动从URL 中解析)
PGHOST:String 类型。主机IP 地址。详细示例见下。
PGPORT:Integer 类型。主机端口号。详细示例见下。
user:String 类型。表示创建连接的数据库用户。
password:String 类型。表示数据库用户的密码。
enable_ce: String 类型。其中enable_ce=1 表示JDBC 支持密态等值查询。
refreshClientEncryption:String 类型。
其中refreshClientEncryption=1 表示密态
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
67
数据库支持客户端缓存刷新(默认值为1)。
loggerLevel:String 类型。目前支持3 种级别:OFF、DEBUG、TRACE。
设置为OFF 关闭日志,设置为DEBUG 和TRACE 记录的日志信息详细程
度不同。
loggerFile:String 类型。Logger 输出的文件名。需要显示指定日志文件名,
若未指定目录则生成在客户端运行程序目录。此参数已废弃,不再生效,
如需使用可通过java.util.logging 属性文件或系统属性进行配置。
allowEncodingChanges:Boolean 类型。设置该参数值为“true”进行字符集
类型更改,配合characterEncoding=CHARSET 设置字符集,二者使用“&”
分隔;characterEncoding 取值范围为UTF8、GBK、LATIN1。
currentSchema:String 类型。在search-path 中指定要设置的schema。
hostRecheckSeconds:Integer 类型。JDBC 尝试连接主机后会保存主机状态:
连接成功或连接失败。
在hostRecheckSeconds 时间内保持可信,
超过则状态
失效。缺省值是10 秒。
ssl:Boolean 类型。以SSL 方式连接。
ssl=true 可支持NonValidatingFactory 通道和使用证书的方式:
1、
NonValidatingFactory 通道需要配置用户名和密码,
同时将SSL 设置为true。
2、配置客户端证书、密钥、根证书,将SSL 设置为true。
sslmode:String 类型。SSL 认证方式。取值范围为:require、verify- ca、
verify-full。
require 只尝试SSL 连接,如果存在CA 文件,则应设置成verify-ca 的
方式验证。
verify-ca 只尝试SSL 连接,并且验证服务器是否具有由可信任的证书
机构签发的证书。
verify-full 只尝试SSL 连接,并且验证服务器是否具有由可信任的证书
机构签发的证书,以及验证服务器主机名是否与证书中的一致。
sslcert:String 类型。提供证书文件的完整路径。客户端和服务端证书的类
型为End Entity。
sslkey:String 类型。提供密钥文件的完整路径。使用时将客户端证书转换
为DER 格式:
openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt
sslrootcert:String 类型。SSL 根证书的文件名。根证书的类型为CA。
sslpassword:String 类型。提供给ConsoleCallbackHandler 使用。
sslpasswordcallback:String 类型。SSL 密码提供者的类名。缺省值:
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
68
org.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。
sslfactory:String 类型。提供的值是SSLSocketFactory 在建立SSL 连接时用
的类名。
sslfactoryarg:String 类型。此值是上面提供的sslfactory 类的构造函数的可
选参数(不推荐使用)。
sslhostnameverifier:String 类型。主机名验证程序的类名。接口实现
javax.net.ssl.HostnameVerifier
,
默
认
使
用
org.postgresql.ssl.PGjdbcHostnameVerifier。
loginTimeout:Integer 类型。指建立数据库连接的等待时间。超时时间单位
为秒。
connectTimeout:Integer 类型。用于连接服务器操作的超时值。如果连接到
服务器花费的时间超过此值,
则连接断开。
超时时间单位为秒,
值为0 时表
示已禁用,timeout 不发生。
socketTimeout:Integer 类型。用于socket 读取操作的超时值。如果从服务
器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0
时表示已禁用,timeout 不发生。
cancelSignalTimeout:Integer 类型。发送取消消息本身可能会阻塞,此属性
控制用于取消命令的“connect 超时”和“socket 超时”。
超时时间单位
为秒,默认值为10 秒。
tcpKeepAlive:
Boolean 类型。
启用或禁用TCP 保活探测功能。
默认为false。
logUnclosedConnections:Boolean 类型。客户端可能由于未调用Connection
对象的close()方法而泄漏Connection 对象。最终这些对象将被垃圾回收,
并且调用finalize()方法。如果调用者自己忽略了此操作,该方法将关闭
Connection。
assumeMinServerVersion:String 类型。客户端会发送请求进行float 精度设
置。该参数设置要连接的服务器版本,如assumeMinServerVersion=9.0,可
以在建立时减少相关包的发送。
ApplicationName:String 类型。设置正在使用连接的JDBC 驱动的名称。通
过在数据库主节点上查询pg_stat_activity 表可以看到正在连接的客户端信
息,
JDBC 驱动名称显示在application_name 列。
缺省值为PostgreSQL JDBC
Driver。
connectionExtraInfo:
Boolean 类型。
表示驱动是否上报当前驱动的部署路径、
进程属主用户到数据库。
取值范围:true 或false,默认值为false。设置connectionExtraInfo 为true,
JDBC 驱动会将当前驱动的部署路径、进程属主用户、url 连接配置信息上
报到数据库中,记录在connection_info 参数里;同时可以在
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
69
PG_STAT_ACTIVITY 中查询到。
autosave:String 类型。共有3 种:"always", "never", "conservative"。
如果查询失败,
指定驱动程序应该执行的操作。
在autosave=always 模式下,
JDBC 驱动程序在每次查询之前设置一个保存点,
并在失败时回滚到该保存
点。在autosave=never 模式(默认)下,无保存点。在autosave=conservative
模式下,每次查询都会设置保存点,但是只会在“statement XXX 无效”等
情况下回滚并重试。
protocolVersion:Integer 类型。连接协议版本号,目前仅支持1 和3。注意:
设置1 时仅代表连接的是V1 服务端。
设置3 时将采用md5 加密方式,
需要
同步修改数据库的加密方式:gs_guc set -N all -I all -c
"password_encryption_type=1" ,重启数据库生效后需要创建用md5 方式加
密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为md5。用
新建用户进行登录(不推荐)。
说明:
MD5 加密算法安全性低,存在安全风险,建议使用更安全的加密算法。
prepareThreshold:Integer 类型。控制parse 语句何时发送。默认值是5。第
一次parse 一个SQL 比较慢,后面再parse 就会比较快,因为有缓存了。如
果一个会话连续多次执行同一个SQL,
在达到prepareThreshold 次数以上时,
JDBC 将不再对这个SQL 发送parse 命令。
preparedStatementCacheQueries:Integer 类型。确定每个连接中缓存的查询
数,默认情况下是256。若在prepareStatement()调用中使用超过256 个不同
的查询,则最近最少使用的查询缓存将被丢弃。0 表示禁用缓存。
preparedStatementCacheSizeMiB:Integer 类型。确定每个连接可缓存的最大
值(以兆字节为单位),默认情况下是5。若缓存了超过5MB 的查询,则
最近最少使用的查询缓存将被丢弃。0 表示禁用缓存。
databaseMetadataCacheFields:Integer 类型。默认值是65536。指定每个连接
可缓存的最大值。“0”表示禁用缓存。
databaseMetadataCacheFieldsMiB:Integer 类型。默认值是5。每个连接可缓
存的最大值,单位是MB。“0”表示禁用缓存。
stringtype:String 类型,可选字段为:false, "unspecified", "varchar"。设置通
过setString()方法使用的PreparedStatement 参数的类型,如果stringtype 设
置为VARCHAR
(默认值)
,
则这些参数将作为varchar 参数发送给服务器。
若stringtype 设置为unspecified,则参数将作为untyped 值发送到服务器,
服务器将尝试推断适当的类型。
batchMode:String 类型。用于确定是否使用batch 模式连接。默认值为on,
表示开启batch 模式。
fetchsize:Integer 类型。用于设置数据库连接所创建statement 的默认
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
70
fetchsize。默认值为0,表示一次获取所有结果。
reWriteBatchedInserts:Boolean 类型。批量导入时,该参数设置为true,可
将N 条插入语句合并为一条:insert into TABLE_NAME values(values1, ...,
valuesN), ..., (values1, ..., valuesN);使用该参数时,需设置batchMode=off。
unknownLength:
Integer 类型,
默认为Integer.MAX_VALUE。
某些postgresql
类型(例如
TEXT )没有明确定义的长度,当通过
ResultSetMetaData.getColumnDisplaySize 和ResultSetMetaData.getPrecision
等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。
uppercaseAttributeName:
Boolean 类型,
默认值为false 不开启,
为true 时开
启。
该参数开启后会将获取元数据的接口的查询结果转为大写。
适用场景为
数据库中存储元数据全为小写,但要使用大写的元数据作为出参和入参。
涉
及
到
的
接
口
: