GaussDB-连接数据库
在创建数据库连接之后,才能使用它来执行SQL语句操作数据。
函数原型
JDBC提供了三个方法,用于创建数据库连接。
- DriverManager.getConnection(String url)
- DriverManager.getConnection(String url, Properties info)
- DriverManager.getConnection(String url, String user, String password)
参数
| 参数 | 描述 |
|---|---|
| url | gaussdbjdbc.jar数据库连接描述符。host为服务器名称或IPv4时,格式如下:- jdbc:gaussdb:(数据库名称缺省则与用户名一致) |
-
jdbc:gaussdb:database
-
jdbc:gaussdb://host/database
-
jdbc:gaussdb://host:port/database
-
jdbc:gaussdb://host:port/database?param1=value1¶m2=value2
-
jdbc:gaussdb://host1:port1,host2:port2/database?param1=value1¶m2=value2host为IPv6时,格式如下:- jdbc:gaussdb:(数据库名称缺省则与用户名一致)
-
jdbc:gaussdb:database
-
jdbc:gaussdb://host/database 或 jdbc:gaussdb://[host]/database
-
jdbc:gaussdb://[host]:port/database
-
jdbc:gaussdb://[host]:port/database?param1=value1¶m2=value2
-
jdbc:gaussdb://[host1]:port1,[host2]:port2/database?param1=value1¶m2=value2说明:- database为要连接的数据库名称。
-
host为数据库服务器名称或IP地址,同时支持IPv4和IPv6。
由于安全原因,数据库CN禁止集群内部其他节点无认证接入。如果要在集群内部访问CN,请将JDBC程序部署在CN所在机器,host使用"127.0.0.1"。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。
建议业务系统单独部署在集群外部,否则可能会影响数据库运行性能。
缺省情况下,连接服务器为localhost。
-
port为数据库服务器端口。
-
当host为IPv6且在url中指定port时,需要通过“[]”分隔IP,如:[IP]:port。
-
param为参数名称,即数据库连接属性。
参数可以配置在URL中,以“?”开始配置,以“=”给参数赋值,以“&”作为不同参数的间隔。也可以采用info对象的属性方式进行配置,详情见示例。
-
value为参数值,即数据库连接属性值。
-
连接时需配置connectTimeout,socketTimeout,如果未配置,默认为0,即不会超时。在DN与客户端出现网络故障时,客户端一直未收到DN侧ACK确认报文,会启动超时重传机制,不断的进行重传。当超时时间达到系统默认的600s后才会报超时错误,这会导致RTO时间较高。
-
建议使用JDBC标准接口建立连接时,确保url格式的合法性,不合法的url会导致异常,且异常中包含原始url字符串,可能造成敏感信息泄漏。 | | info | 数据库连接属性(所有属性大小写敏感)。常用的属性如下:- PGDBNAME:String类型。表示数据库名称(URL中无需配置该参数,自动从URL中解析)。
-
PGHOST:String类型。主机IP地址,同时支持IPv4和IPv6。若配置多个CN,它们的IP和端口用“:”分隔,并作为整体以逗号分隔其他CN(URL中无需配置该参数,自动从URL中解析)。详情见示例。
-
PGPORT:Integer类型。主机端口号。若配置多个CN,它们的端口号和IP用":"分割,并作为整体以逗号分隔其他CN(URL中无需配置该参数,自动从URL中解析)。详情见示例。
-
user:String类型。表示创建连接的数据库用户。
-
password:String类型。表示数据库用户的密码。
-
enable_ce:String类型。其中enable_ce=1表示JDBC支持密态等值查询基本能力,enable_ce=3仅支持密态等值查询能力。
-
key_info:String类型。与enable_ce一起使用,在密态数据库中,用于设置访问外部密钥管理者的参数。
-
crypto_module_info:String类型。控制加载三方加解密动态库。此选项开启后,在设置key_info时可以选择third_kms来启用三方动态库作为密钥管理和加解密库。
-
refreshClientEncryption:String类型。缺省值为NULL。其中refreshClientEncryption=1表示密态数据库支持客户端缓存刷新(默认值为1)。
-
loggerLevel:String类型。缺省值为NULL,不启用。目前支持4种级别:OFF、INFO、DEBUG、TRACE。设置为OFF关闭日志。设置为INFO、DEBUG和TRACE记录的日志信息详细程度不同。
-
loggerFile:String类型。用于指定日志输出路径(目录和文件名)。需要明确指定日志目录和文件名,若未指定目录则会在客户端运行程序目录下生成日志文件。若不配置或配置的路径不存在,则日志会默认通过流输出。此参数已废弃,不再生效,仅在开启连接监控功能时用于指定输出监控日志路径,如需将JDBC日志输出到指定路径,可通过 java.util.logging 属性文件或系统属性进行配置。
-
logger:String类型。表示JDBC Driver要使用的日志输出框架。JDBC Driver支持对接用户应用程序使用的日志输出框架。目前支持的第三方日志输出框架只有基于Slf4j-API的日志框架。具体使用方式,请参见6.2.9日志管理。
- 如果缺省或设置为JDK LOGGER,则JDBC Driver使用JDK LOGGER。
- 否则必须设置采用基于slf4j-API 第三方日志框架。
-
allowEncodingChanges:Boolean类型,缺省值为false。设置该参数值为true进行字符集类型更改,配合characterEncoding设置字符集,二者使用“&”分隔;characterEncoding取值范围为UTF8、GBK、LATIN1、GB18030、GB18030_2022、ZHS16GBK。例:allowEncodingChanges=true&characterEncoding=UTF8。
说明:
ZHS16GBK字符集支持欧元符号。如果要显示欧元符号,请将字符集设置为ZHS16GBK。
-
currentSchema:String类型。在search-path中指定要设置的schema。如果schema名包含除字母、数字、下划线之外的特殊字符,建议在schema名上加引号,注意加引号后schema名大小写敏感。如需配置多个schema,要用“,”进行分隔,包含特殊字符的schema也需要加引号处理。
-
loadBalanceHosts:Boolean类型。在默认模式下(禁用),顺序连接URL中指定的多个主机。如果启用,则使用洗牌算法从候选主机中随机选择一个主机建立连接。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…