计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive
本文导读

连接数据库

更新时间:2024-05-07 GMT+08:00

在创建数据库连接之后,才能使用它来执行SQL语句操作数据。

函数原型

JDBC提供了三个方法,用于创建数据库连接。
  • DriverManager.getConnection(String url)
  • DriverManager.getConnection(String url, Properties info)
  • DriverManager.getConnection(String url, String user, String password)

参数

表1 数据库连接参数

参数

描述

url

gsjdbc4.jar数据库连接描述符。格式如下:

  • jdbc:postgresql:(数据库名称缺省则与用户名一致)
  • jdbc:postgresql:database
  • jdbc:postgresql://host/database(端口值缺省会使用默认端口)
  • jdbc:postgresql://host:port/database
  • jdbc:postgresql://host:port/database?param1=value1&param2=value2
  • jdbc:postgresql://host1:port1,host2:port2/database?param1=value1&param2=value2
说明:

使用gsjdbc200.jar时,将“jdbc:postgresql”修改为“jdbc:gaussdb”

  • database为要连接的数据库名称。
  • host为数据库服务器名称或IP地址。

    由于安全原因,数据库CN禁止集群内部其他节点无认证接入。如果要在集群内部访问CN,请将JDBC程序部署在CN所在机器,host使用"127.0.0.1"。否则可能会出现“FATAL: Forbid remote connection with trust method!”错误。

    建议业务系统单独部署在集群外部,否则可能会影响数据库运行性能。

    缺省情况下,连接服务器为localhost。

  • port为数据库服务器端口。

    缺省情况下,会尝试连接到5431端口的database。

  • param为参数名称,即数据库连接属性。

    参数可以配置在URL中,以"?"开始配置,以"="给参数赋值,以"&"作为不同参数的间隔。也可以采用info对象的属性方式进行配置,详情见示例

  • value为参数值,即数据库连接属性值。

info

数据库连接属性(所有属性大小写敏感)。常用的属性如下:

  • PGDBNAME:String类型。表示数据库名称(URL中无需配置该参数,自动从URL中解析)。
  • PGHOST:String类型。主机IP地址。若配置多个CN,它们的IP和端口用“:”分隔,并作为整体以逗号分隔其他CN(URL中无需配置该参数,自动从URL中解析)。详情见示例
  • PGPORT:Integer类型。主机端口号。若配置多个CN,它们的端口号和IP用":"分割,并作为整体以逗号分隔其他CN(URL中无需配置该参数,自动从URL中解析)。详情见示例
  • user:String类型。表示创建连接的数据库用户。
  • password:String类型。表示数据库用户的密码。
  • enable_ce:String类型。其中enable_ce=1表示JDBC支持密态等值查询基本能力。
  • refreshClientEncryption: String类型。其中refreshClientEncryption=1表示密态数据库支持客户端缓存刷新(默认值为1)。
  • loggerLevel:String类型。目前支持4种级别:OFF、INFO、DEBUG、TRACE。设置为OFF关闭日志。设置为INFO、DEBUG和TRACE记录的日志信息详细程度不同,缺省值为null,不启用。
  • loggerFile:String类型。用于指定日志输出路径(目录和文件名)。若只指定文件名,未指定目录则日志生成在客户端运行程序目录;若不配置或配置的路径不存在,则日志会默认通过流输出。此参数已废弃,不再生效,如需使用可通过 java.util.logging 属性文件或系统属性进行配置。
  • logger:String类型。表示JDBC Driver要使用的日志输出框架。JDBC Driver支持对接用户应用程序使用的日志输出框架。目前仅支持第三方的基于Slf4j-API的日志框架。具体使用方式,请参见6.2.9日志管理。
    1. 如果不设置或设置为JDK LOGGER,则JDBC Driver使用JDK LOGGER。
    2. 否则必须设置采用基于slf4j-API 第三方日志框架。
  • allowEncodingChanges:Boolean类型。设置该参数值为“true”进行字符集类型更改,配合characterEncoding=CHARSET设置字符集,二者使用"&"分隔;characterEncoding取值范围{UTF8、GBK、LATIN1、GB18030},缺省值为false。
    说明:

    当连接到字符集为GB18030_2022的数据库时,characterEncoding设置为GB18030_2022不生效,会默认使用UTF8,需要设置为GB18030才能正常解析服务端的GB18030_2022字符。

  • currentSchema:String类型。在search-path中指定要设置的schema。如果Schema名包含除字母、数字、下划线之外的特殊字符,建议在Schema名上加引号,注意加引号后Schema名大小写敏感。如需配置多个Schema,要用“,”进行分隔,包含特殊字符的Schema也需要加引号处理。

    例如:currentSchema=schema_a、"schema-b"、"schema/c"。

  • loadBalanceHosts:Boolean类型。在默认模式下(禁用),顺序连接URL中指定的多个主机。如果启用,则使用洗牌算法从候选主机中随机选择一个主机建立连接。
  • autoBalance:String类型。
    1. 设置为true、balance或roundrobin表示开启JDBC负载均衡功能,将应用程序的多个连接均衡到数据库集群中的各个可用CN

      例如:jdbc:postgresql://host1:port1,host2:port2/database?autoBalance=true

      JDBC将定期获取(周期刷新可使用参数refreshCNIpListTime配置,默认为10s)整个集群可用CN列表(CN列表中获取的host是数据ip),比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4。

      host1和host2在autoBalance启用时,仅在首次连接做高可用用途,后续Driver将从host1、host2、host3和host4中依次选择可用的CN刷新可用CN列表,后续用户新建的connection将使用RoundRobin算法从host1、host2、host3和host4选取CN主机进行连接。

    2. 设置为priorityn表示开启JDBC优先级负载均衡功能,将应用程序的多个连接首先均衡到url上配置的前n个中可用的CN数据库节点。当url上配置前n个节点全部不可用时,连接会随机分配到数据库集群中其他可用CN数据库节点。n为数字,不小于0,且小于url上配置的CN数量。

      例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3,host4:port4/database?autoBalance=priority2

      JDBC将定期获取(周期按refreshCNIpListTime定义)整个集群可用CN列表,比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4,host5:port5,host6:port6,其中host1和host2处于AZ1,host3和host4处于AZ2。

      Driver将优先从host1、host2中做负载均衡,host1和host2全部不可用才从host3、host4、host5和host6中随机选择CN主机连接。

    3. 设置为shuffle表示开启JDBC随机负载均衡功能,将应用程序的多个连接随机均衡到数据库集群中的各个可用CN。

      例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3/database?autoBalance=shuffle

      JDBC将定期获取(周期刷新可使用参数refreshCNIpListTime配置,默认为10S)整个集群的可用CN列表,比如获取到的列表为:host1:port1,host2:port2,host3:port3,host4:port4。

      host1:port1,host2:port2,host3:port3,仅在首次连接做高可用,后续连接将在刷新后的CN列表中,使用shuffle算法随机选用一个CN节点进行连接。

    4. 设置为specified表示开启JDBC负载均衡功能,并且只在用户url中指定的节点上建连。

      例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3,host4:port4/database?autoBalance=specified&priorityServers=2

      JDBC将识别用户,指定host1、host2为用户指定主集群中建立连接的节点,host3、host4为备集群指定建立连接的节点。建立连接时,首先在host1、host2上均匀建连,全部故障时不会在集群剩余节点上建连。备升主后,在host3、host4上均匀建连,全部故障不会在集群剩余节点上建连。

    5. 设置为false,不开启JDBC负载均衡功能和优先级负载均衡功能。默认为false。
      注意:
      1. 负载均衡是基于连接级别,不是基于事务级别。如果连接是长连接,并且连接上的负载不均衡,无法保证CN主机上的负载均衡。
      2. 负载均衡仅能在分布式场景下使用,集中式环境中不可使用。
      3. 在开启负载均衡时,URL中可以配置浮动IP或数据IP,如果配置为浮动IP,系统会根据浮动IP获取对应的数据IP,通过获取的数据IP做负载均衡。因此URL中配置浮动IP或数据IP时,都需要确保数据IP网络连接正常,否则负载均衡功能异常。
  • refreshCNIpListTime:Integer类型。JDBC定期检测数据库集群CN状态,获取可用CN的IP列表的时间间隔,默认为10秒。
  • hostRecheckSeconds:Integer类型。JDBC尝试连接主机后会保存主机状态:连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。缺省值是10秒。
  • ssl:Boolean类型。以SSL方式连接。

    ssl=true可支持NonValidatingFactory通道和使用证书的方式:

    1、NonValidatingFactory通道需要配置用户名和密码,同时将SSL设置为true。

    2、配置客户端证书、密钥、根证书,将SSL设置为true。

  • sslmode:String类型。SSL认证方式。取值范围为:disable、allow、prefer、require、verify-ca、verify-full。
    • disable:不使用SSL安全连接。
    • allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。
    • prefer:如果数据库支持,那么首选使用SSL连接,但不验证数据库服务器的真实性。
    • require只尝试SSL连接,不会检查服务器证书是否由受信任的CA签发,且不会检查服务器主机名与证书中的主机名是否一致。
    • verify-ca只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。
    • verify-full只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致。
  • sslcert:String类型。提供证书文件的完整路径。客户端和服务端证书的类型为End Entity。
  • sslkey:String类型。提供密钥文件的完整路径。如果客户端证书不是DER格式,使用时将客户端证书转换为DER格式,生成方式请参见连接数据库(以SSL方式)章节。
  • sslrootcert:String类型。SSL根证书的文件名。根证书的类型为CA。
  • sslpassword:String类型。提供给ConsoleCallbackHandler使用。
  • sslpasswordcallback:String类型。SSL密码提供者的类名。缺省值:org.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler。
  • sslfactory:String类型。提供的值是SSLSocketFactory在建立SSL连接时用的类名。
  • sslprivatekeyfactory: String类型。提供的值是实现私钥解密方法的接口org.postgresql.ssl.PrivateKeyFactory的实现类的完整限定类名。如果不提供,首先尝试默认的jdk私钥解密算法,如果无法解密,则使用org.postgresql.ssl.BouncyCastlePrivateKeyFactory,用户需要提供bcpkix-jdk15on.jar包,版本建议:1.65以上。
  • sslfactoryarg:String类型。此值是sslfactory类的构造函数的可选参数(不推荐使用该参数)。
  • sslhostnameverifier:String类型。主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.postgresql.ssl.PGjdbcHostnameVerifier。
  • loginTimeout:Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。当url配置多IP时,若获取连接花费的时间超过此值,则连接失败,不再尝试后续IP。缺省值为0,表示禁用。
  • connectTimeout:Integer类型。用于连接服务器操作的超时值。如果连接到服务器花费的时间超过此值,则连接断开。超时时间单位为秒,值为0时表示已禁用,timeout不生效。当url配置多IP时,表示连接单个IP的超时时间,缺省值为0。
  • socketTimeout:Integer类型。用于socket读取操作的超时值。如果从服务器读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,值为0时表示已禁用,timeout不生效,缺省值为0。
  • socketTimeoutInConnecting:Integer类型。用于控制建连阶段socket读取操作的超时值。如果建连时从服务器读取所花费的时间超过此值,则查找下一个节点建连。超时时间单位为秒,默认为5s。
  • statementTimeout:Integer类型。用于控制connection中statement执行时间的超时值。如果statement执行时间超过此值,则取消该statement执行。超时时间单位为毫秒,值为0表示已禁用,timeout不生效,缺省值为0。
  • driverInfoMode:String类型。用于控制驱动描述信息的输出模式。取值范围为postgresql、gaussdb,默认缺省值为postgresql,输出postgresql相关的驱动描述信息;设置为gaussdb时输出gaussdb相关的驱动描述信息。
  • cancelSignalTimeout:Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的“connect超时”和“socket超时”。超时时间单位为秒,默认值为10秒。
  • tcpKeepAlive:Boolean类型。启用或禁用TCP保活探测功能。默认为false。
  • logUnclosedConnections:Boolean类型。客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被垃圾回收,并且调用finalize()方法。如果调用者忽略了此操作,该方法将关闭Connection,缺省值为false。
  • assumeMinServerVersion(废弃):String类型。该参数设置要连接的服务器版本。
  • ApplicationName:String类型。设置正在使用连接的应用程序名称。通过在CN上查询pgxc_stat_activity表可以看到正在连接的客户端信息,显示在application_name列。缺省值为PostgreSQL JDBC Driver。
  • connectionExtraInfo:Boolean类型。表示驱动是否上报当前驱动的部署路径、进程属主用户到数据库。

    取值范围:true或false,默认值为false。设置connectionExtraInfo为true,JDBC驱动会将当前驱动的部署路径、进程属主用户、url连接配置信息上报到数据库中,记录在connection_info参数里;同时可以在PG_STAT_ACTIVITY和PGXC_STAT_ACTIVITY中查询到。

  • autosave:String类型。共有3种:"always", "never", "conservative"。如果查询失败,指定驱动程序应该执行的操作。在autosave=always模式下,JDBC驱动程序在每次查询之前设置一个保存点,并在失败时回滚到该保存点。在autosave=never模式(默认)下,无保存点。在autosave=conservative模式下,每次查询都会设置保存点,但是只会在“statement XXX无效”等情况下回滚并重试,缺省值为never。
  • protocolVersion:Integer类型。连接协议版本号,目前仅支持1和3。设置1时仅代表连接的是V1服务端。设置3时将采用MD5加密方式,需要同步修改数据库的加密方式,将GUC参数password_encryption_type设置为1,重启集群生效后需要创建用MD5方式加密口令的用户。同时修改pg_hba.conf,将客户端连接方式修改为MD5,用新建用户进行登录(因为设置该值后,只能使用低等级的加密方式(MD5),降低安全性,所以不推荐设置)。
    说明:

    MD5加密算法安全性低,存在安全风险,建议使用更安全的加密算法。

  • prepareThreshold:Integer类型。该值决定着PreparedStatement对象在执行多少次以后使用服务端已经准备好的statement。默认值是5,意味着在执行同一个PreparedStatement对象时,在第五次以及以上执行时不再向服务端发送parse消息对statement进行解析,而使用之前在服务端已经解析好的statement。
  • preparedStatementCacheQueries:Integer类型。该参数确定了每个连接的cache缓存Statement对象生成query的最大个数。默认值为256,若Statement对象生成query个大于256则会将最近最少使用的query从缓存中丢弃。“0”表示禁用缓存。
  • preparedStatementCacheSizeMiB:Integer类型,该参数确定了每个连接的cache缓存Statement对象所生成query的最大值(以兆字节为单位),默认情况下是5。若缓存了超过5MB的query,则最近最少使用的查询缓存将被丢弃。“0”表示禁用缓存。
  • databaseMetadataCacheFields:Integer类型。默认值是65536。指定每个连接可缓存的最大字段的个数。“0”表示禁用缓存。
  • databaseMetadataCacheFieldsMiB:Integer类型。默认值是5。指定每个连接可缓存的字段的最大值,单位是MB。“0”表示禁用缓存。
  • stringtype:String类型。可选字段为:"unspecified"、"varchar"。设置通过setString()方法使用的PreparedStatement参数的类型,如果stringtype设置为VARCHAR(默认值),则这些参数将作为varchar参数发送给服务器。若stringtype设置为unspecified,则参数将作为untyped值发送到服务器,服务器将尝试推断适当的类型。
  • batchMode:String类型。用于确定是否使用batch模式连接。默认值为on,表示开启batch模式。设置batchMode=on执行成功的返回结果为[count, 0, 0...0],数组第一个元素为批量影响的总条数;设置batchMode=off执行成功的返回结果为[1, 1, 1...1],数组各元素对应单次修改的影响条数。
  • fetchsize:Integer类型。用于设置数据库连接所创建statement的默认fetchsize。默认值为0,表示一次获取所有结果。与defaultRowFetchSize等价。
  • reWriteBatchedInserts:Boolean类型。批量导入时,该参数设置为true,可将N条插入语句合并为一条:insert into TABLE_NAME values(values1, ..., valuesN), ..., (values1, ..., valuesN);使用该参数时,需设置batchMode=off,缺省值为false。
  • unknownLength:Integer类型。默认为Integer.MAX_VALUE。某些postgresql类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。
  • defaultRowFetchSize:Integer类型。确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。缺省值是0,意味着ResultSet中将一次获取所有行。本参数不允许设置为负值。
  • binaryTransfer:Boolean类型。使用二进制格式发送和接收数据,默认值为“false”。
  • binaryTransferEnable:String类型。启用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一,例如binaryTransferEnable=INT4_ARRAY,INT8_ARRAY。

    比如:OID名称为BLOB,编号为88,可以进行如下配置:

    binaryTransferEnable=BLOB 或 binaryTransferEnable=88。

  • binaryTransferDisEnable:String类型。禁用二进制传输的类型列表,以逗号分隔。OID编号和名称二选一。覆盖binaryTransferEnable的设置。
  • blobMode:String类型。用于设置setBinaryStream方法绑定参数的数据类型,当该值为on时表示setBinaryStream绑定的数据类型为blob类型,为off时表示绑定的数据类型为bytea类型,默认为on。建议从Oracle、Mysql迁移的系统将该值设定为on,从Postgresql迁移的系统设定为off。
  • socketFactory:String类型。用于创建与服务器socket连接的类的名称。该类必须实现接口“javax.net.SocketFactory”,并定义无参或单String参数的构造函数。
  • socketFactoryArg:String类型。此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。
  • receiveBufferSize:Integer类型。该值用于设置连接流上的SO_RCVBUF。
  • sendBufferSize:Integer类型。该值用于设置连接流上的SO_SNDBUF。
  • preferQueryMode:String类型。共有4种:"extended"、"extendedForPrepared"、"extendedCacheEverything"和"simple"。用于指定执行查询的模式,默认值为extended。simple模式只发送Q消息,仅支持文本模式,不支持parse与bind;extended模式会使用parse、bind和execute消息;extendedForPrepared模式下只有Prepared Statement对象使用扩展查询,Statement对象只使用简单查询;extendedCacheEverything模式会缓存每个Statement对象所生成的query。
  • ApplicationType:String类型。共有2种:"not_perfect_sharding_type"、"perfect_sharding_type"。用于设置是否开启分布式写入和查询,默认值为"not_perfect_sharding_type"。not_perfect_sharding_type模式下开启分布式写入和查询,perfect_sharding_type模式下默认禁止分布式写入和查询,只有在sql文中加入/* multinode */ 才能执行分布式写入和查询。该项设置只有数据库处于gtm free场景的情况下才会有效。
  • priorityServers:Integer类型。此值用于指定url上配置的前n个节点作为主集群被优先连接。默认值为NULL。该值为数字,大于0,且小于url上配置的CN数量。用于流式容灾场景。

    例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3,host4:port4,/database?priorityServers=2,即表示host1与host2为主集群节点,host3与host4为容灾集群节点。

  • usingEip:Boolean类型。此值用于控制是否使用弹性公网IP做负载均衡。默认值为true,表示使用弹性公网IP做负载均衡,false表示使用数据IP做负载均衡。当usingEip=true或者不配置时,url中的host需使用弹性公网IP,usingEip=false时,url中的host需使用数据IP,否则会导致priorityn负载均衡策略失效。
  • traceInterfaceClass:String类型。默认值为NULL,用于获取traceId的实现类。值是实现获取traceId方法的接口org.postgresql.log.Tracer的实现类的完整限定类名。
  • use_boolean:Boolean类型。用于设置extended模式下setBoolean方法绑定的oid类型,默认为false,绑定int2类型;设置为true则绑定bool类型。
  • allowReadOnly:Boolean类型。用于设置是否允许只读模式,默认为true,允许设置只读模式;设置为false则禁用只读模式。
  • TLSCiphersSupperted:String类型。用于设置支持的TLS加密套件,默认为TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384。
  • stripTrailingZeros:Boolean类型。默认值为false,设置为true则去除numeric类型后的0,仅对ResultSet.getObject(int columnIndex)生效。
  • enableTimeZone:Boolean类型。默认值为true,用于指定是否启用服务端时区设置,ture表示获取JVM时区指定数据库时区,false表示使用数据库时区。
  • enableStandbyRead:Boolean类型。默认值为false,用于指定是否开启备机读模式,true表示启用,false表示禁用。
  • oracleCompatible:String类型。默认为false。用户控制驱动接口的ORA兼容特性。有以下几种取值:
    1. 设置为true或on,表示开启驱动侧所有的ORA兼容特性。
    2. 设置为false或off,表示关闭驱动侧所有的ORA兼容特性。
    3. 设置为“tag1,tag2,tag3”,配置一个或多个tag,tag之间用“,”隔开,表示开启驱动侧部分的ORA兼容特性,每个tag对应一个ORA兼容特性。

      当前支持的tag有:

      • getProcedureColumns:DatabaseMetaData#getProcedureColumns接口的行为兼容ORA行为。
      • batchInsertAffectedRows:reWriteBatchedInserts开启后,执行批量插入接口Statement#executeBatch的返回结果兼容ORA行为。
  • printSqlInLog:Boolean类型。默认值为true,用于指定异常信息中或日志中是否输出sql语句,true表示启用,false表示禁用。
  • parseCandidatesByDomain:Boolean类型。默认值false,用于指定是否根据域名获得备节点。true表示启用,false表示禁用。开启后需要将url中的host信息配置成域名+端口的形式,驱动基于域名获得IP,并生成备节点集合,并可以配合autoBalance参数做负载均衡。
  • primaryDomains:Integer类型。用于指定url上配置的前n个域名作为主集群被优先连接。默认为0,表示关闭。开启时需要大于0,且小于url上配置的域名数量。

    例如:jdbc:postgresql://domain1:port1,domain2:port2,domain3:port3,domain4:port4,/database?primaryDomains=2。即表示domain1和domain2对应主机群,优先连domain1和domain2对应的IP。如果发生主备切换,讲domain3和domain4标记为主机群,优先对domain3和domain4建连。

  • priorityDomains:Integer类型。用于指定url上配置的前n个节点作为优先连接的节点。默认为0,开启时需要大于0,且小于url上配置的域名数量,如果配置了primaryDomains,则需要小于primaryDomains配置的数值。

    例如:jdbc:postgresql://domain1:port1,domain2:port2,domain3:port3,domain4:port4,/database?primaryDomains=2&priorityDomains=1。即表示domain1和domain2对应的主机群,但是优先连domain1对应的IP,domain1不可连后才尝试连domain2。如果发生主备切换,将domain3和domain4标记成主集群,但是优先连domain3对应的IP,domain3不可以连后才尝试连domain4对应的IP。

  • refreshDomainResolveTime:Integer类型。默认为10,单位是秒,最小值为1。代表域名解析结果的刷新周期,需要将parseCandidatesByDomain参数设置为true时才能生效,将url中涉及的域名解析刷新时间设置为指定的数值,并在异步线程中定时更新。

user

数据库用户。

password

数据库用户的密码。

说明:

uppercaseAttributeName参数开启后,如果数据库中有小写、大写和大小写混合的元数据,则只能查询出小写部分的元数据,并以大写的形式输出。使用前请务必确认元数据的存储是否全为小写以避免数据出错。

示例

示例1:连接数据库

 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
30
31
32
33
34
35
//以下用例以gsjdbc4.jar为例。
//以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。
public static Connection getConnect(String username, String passwd)
    {
        //驱动类。
        String driver = "org.postgresql.Driver";
        //数据库连接描述符。
        String sourceURL = "jdbc:postgresql://$ip:$port/postgres";
        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;
    }

示例2:使用Properties对象作为参数建立连接

 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
30
31
32
33
34
35
36
37
// 以下代码将使用Properties对象作为参数建立连接
public static Connection getConnectUseProp(String username, String passwd)
    {
        //驱动类。
        String driver = "org.postgresql.Driver";
        //数据库连接描述符。
        String sourceURL = "jdbc:postgresql://$ip:$port/postgres?autoBalance=true";
        Connection conn = null;
        Properties info = new Properties();
        
        try
        {
            //加载驱动。
            Class.forName(driver);
        }
        catch( Exception e )
        {
            e.printStackTrace();
            return null;
        }
        
        try
        {
             info.setProperty("user", username);
             info.setProperty("password", passwd);
             //创建连接。
             conn = DriverManager.getConnection(sourceURL, info);
             System.out.println("Connection succeed!");
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }
        
        return conn;
    }

常用参数详情请参见JDBC常用参数参考

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容