使用JDBC连接数据库
导入
任何使用JDBC的程序都需要导入java.sql包:
import java.sql.*
说明
在需要同时使用PostgreSQL及Vastbase驱动时,为避免包名与连接串名冲突,我们提供了使用”cn.com.vastbase”作为包名前缀的驱动,请联系相关技术人员获取!
使用”jdbc:vastbase”作为URL前缀替换”jdbc:postgresql”;
使用”cn.com.vastbase.Driver”作为驱动名称替换”org.postgresql.Driver”。
加载驱动
在试图与数据库建立连接之前,首先需要加载驱动,加载驱动有两种方法:
在代码中,用Class.forName(“org.postgresql.Driver”)方法显示加载驱动;
在JVM启动时作为参数传递,比如:java -Djdbc.drivers=org.postgresql.Driver
连接数据库
URL格式
使用Vastbase G100 JDBC驱动访问Vastbase G100 的URL格式如下:
jdbc:postgresql://host:port/database
jdbc:postgresql://host:port/
jdbc:postgresql://host/database
jdbc:postgresql://host/
jdbc:postgresql:/
URL中各参数的含义如下:
host
服务端的主机名,默认为localhost,如果要指定IPV6的地址,必须用方括号括起主机参数,例如:jdbc:postgresql://[::1]:5432/atlas.
port
服务端监听的端口,默认为5432.
database
数据库名称,默认连接的数据库是与用户同名的数据库。比如连接用户为vbuser,如果不指定database参数,则默认连接到vbuser这个数据库。
获取JDBC连接
使用DriverManager.getConnection()获取连接:
Connection connection = DriverManager.getConnection(url, username,password);
关闭JDBC连接
关闭连接时调用Connection的close()方法即可:
Connection connection = DriverManager.getConnection(url, username,password);
connection.close();
连接参数
名称 | 类型 | 定义 |
---|---|---|
user | String | 连接数据库的用户 |
password | String | 数据库用户的密码 |
sendBufferSize | int | 在连接流上设置SO_SNDBUF |
recvBufferSize | int | 在连接流上设置SO_RCVBUF |
tcpKeepAlive | boolean | 启用或禁用TCP keep-alive |
socketTimeout | int | socket读取操作的超时时间 |
ApplicationName | String | 指定正在使用连接的应用程序名称 |
currentSchema | String | 指定设置到search-path中的schema |
readOnly | boolean | 将连接设置为只读模式 |
characterEncoding | String | 设置client_encoding,支持gbk、utf8,设置为gbk时,需要将allowEncodingChanges设置为true |
allowEncodingChanges | boolean | 设置该参数值为“true”进行字符集类型更改,配合characterEncoding设置字符集 |
db_compatibility | String | 兼容模式,默认值为postgresql,可设置有postgresql和oracle,该参数设置从数据库返回的对象名大小写。设置为postgresql时,返回对象名的字母大小写与数据库中一致,设置为oracle时,使用ResultSetMetaData获取对象名时,对象名的字母将以大写返回,并且disableColumnSanitiser=fasle设置无效。注:当对象名是使用双引号引住的小写名称(没有大写字母),也会转换成全大写字母返回,因此使用此参数时需要注意对象名的大小写。 |
prepareThreshold | int | 指定使用PreparedStatement构造的sql语句在重复执行多少次后会缓存在数据库服务端,默认值5,即执行5次后会把查询计划等信息缓存到数据库端,随后的请求指挥发送该语句缓存后的句柄,建议默认值 |
preparedStatementCacheQueries | int | 每个连接中可缓存的PreparedStatement,默认值256,建议默认值 |
preparedStatementCacheSizeMiB | int | 每个连接中语句缓存的最大值,默认5MB,单位5MB,建议默认值 |
defaultRowFetchSize | int | 指定在一个查询中,每次抓取的行数,主要是防止一次性从数据库抓取的数据量太大造成应用端大量的内存消耗,进而导致内存溢出。默认为0,即一次性抓取全部符合条件的行,一般应用端在进行查询时都指定了分页条件,建议使用默认值 |
reWriteBatchedInserts | boolean | 折叠批量insert的语句(使用executeBatch方法),建议开启(true)。样例:insert into foo (col1, col2, col3) values (1,2,3);insert into foo (col1, col2, col3) values (4,5,6); 会合并为insert into foo (col1, col2, col3) values (1,2,3),(4,5,6); |
socketFactory | String | 指定socket工厂类 |
socketFactoryArg | String | 指定socket工厂类参数 |
targetServerType | String | any:连接到任意一个可用的数据库节点 master:连接到任意一个可写的数据库节点 slave:连接到任意一个只读的数据库节点 secondary:连接到任意一个只读的数据库节点 preferSlave:连接到任意一个只读的数据库节点,如果没有可用的只读节点,则连接到可读可写节点 preferSecondary :连接到任意一个只读的数据库节点,如果没有可用的只读节点,则连接到可读可写节点 |
loadBalanceHosts | boolean | 配合targetServerType使用,若为true,则随机分配节点,若为false,则按顺序分配节点 |