暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux下Druid连接池GBase 8s数据库配置

原创 lc17 2020-08-26
2555

Linux下Druid连接池GBase 8s数据库配置
前言
一、Druid&GBase 8s是什么?
二、Druid配置
1.properties文件
2.在java代码中增加GBase 8s数据库相关内容
3.编译和运行
总结
前言
Druid是目前比较流行的数据库连接池,已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。本文介绍Linux环境下Druid如何配置GBase 8s数据库。

提示:以下是本篇文章正文内容,下面案例可供参考

一、Druid&GBase 8s是什么?
示例: Druid是阿里开源的数据库连接池,作为后起之秀,性能比dbcp、c3p0更高,使用也越来越广泛。
GBase 8s是天津南大通用数据技术股份有限公司的一款安全型数据库管理系统,具有完全自主知识产权,是市场上主流的国产数据库。

二、Druid配置
1.properties文件
首先需要创建一个Druid的properties文件,不同数据库差别很小。

内容如下(示例):

maxWait=12000testWhileIdle=true
testOnBorrow=true
timeBetweenEvictionRunsMillis=60000validationQueryTimeout=30000defaultAutoCommit=true
removeAbandoned = true
removeAbandonedTimeout = 180poolPreparedStatements = true
maxOpenPreparedStatements = 10012345678910
2.在java代码中增加GBase 8s数据库相关内容
代码如下(示例):

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;public class DruidPollConnUtils {

private static String DRUIDPool = "druid.properties";

public static void main(String[] args) throws IOException, SQLException{
	DruidDataSource dds = initDruidDataSource();
	PreparedStatement pStat = null;
	ResultSet rs = null;
	Connection conn = dds.getConnection();
	conn.setAutoCommit(false);
	pStat = conn.prepareStatement("insert into t1(f1) values(?)");
	pStat.setInt(1, 1);
	pStat.executeUpdate();
	conn.commit();
	Statement stat = conn.createStatement();
	rs = stat.executeQuery("select count(*) from t1");
	while (rs.next()) {
		System.out.println("total insert " + rs.getInt(1) + " rows");
	}
	
	rs = stat.executeQuery("select * from t1 where 1=0");
	ResultSetMetaData rsmd = rs.getMetaData();
    int columnCount = rsmd.getColumnCount();
    for (int i = 0; i < columnCount; i++) {
      System.out.println(rsmd.getColumnName(i+1) + "\t");
    }              
	closeAll(null, pStat, conn);
}
public static  DruidDataSource initDruidDataSource() {
	Properties p = new Properties();
	FileInputStream fi = null;
	DruidDataSource source = null;
	try{
		fi = new FileInputStream(DRUIDPool);
		p.load(fi);
		String DRIVER = "com.gbasedbt.jdbc.IfxDriver";
		String URL = "jdbc:gbasedbt-sqli://172.16.17.131:19088/testdb:informixserver=gbaseserver";
		String USERNAME = "gbasedbt";
		String PASSWORD = "123123";
		source =  (DruidDataSource)DruidDataSourceFactory.createDataSource(p);
		System.out.println(source.getMaxOpenPreparedStatements());
		System.out.println(source.isPoolPreparedStatements());
		source.setUrl(URL);
		source.setUsername(USERNAME);
		source.setPassword(PASSWORD);
		source.setDriverClassName(DRIVER);
		source.setInitialSize(5);
		source.setMaxActive(10);
		source.setMinIdle(5);
		source.setValidationQuery("SELECT 1 from sysmaster:sysdual");
		p.clear();
		p = null;
	}catch(Exception e){
		e.printStackTrace();
	}finally{
		try {
			if (fi!=null){
				fi.close();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	return source;
}

public static void closeAll(ResultSet rs, PreparedStatement stat, Connection conn) {
	if (rs != null)
		try {
			rs.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	if (stat != null)
		try {
			stat.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	if (conn != null)
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
}}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106

需要注意的是url串的写法,示例中写法为:
URL = “jdbc:gbasedbt-sqli://172.16.17.131:19088/testdb:informixserver=gbaseserver”
其中数据库IP地址为172.16.17.131,端口号为19088,默认数据库名为testdb,数据库示例名为gbaseserver。
另外需要设定用户名和口令,分别为数据库访问使用的用户名和口令:
String USERNAME = “gbasedbt”;
String PASSWORD = “123456”;

3.编译和运行
首先需要在linux环境下将所需的jar包包含在CLASSPATH下:
export CLASSPATH=$CLASSPATH:/home/gbasedbt/druid/druid-1.0.29.jar:./home/gbasedbt/gbase/jdbc/lib/ifxjdbc.jar

其次需要在testdb库中创建测试表t1
create table t1 (f1 int);

然后就可以进行编译和运行:
[gbasedbt@cos7 druid]$ javac DruidPollConnUtils.java
[gbasedbt@cos7 druid]$ ls -l
total 3264
-rw-rw-r-- 1 gbasedbt gbasedbt 2148117 Aug 19 22:47 druid-1.0.29.jar
-rw-rw-r-- 1 gbasedbt gbasedbt 3870 Aug 19 23:05 DruidPollConnUtils.class
-rw-rw-r-- 1 gbasedbt gbasedbt 3822 Aug 19 22:54 DruidPollConnUtils.java
-rw-rw-r-- 1 gbasedbt gbasedbt 654 Aug 19 22:47 druid.properties
-rwxrwxr-x 1 gbasedbt gbasedbt 1179537 Aug 19 22:48 ifxjdbc.jar
[gbasedbt@cos7 druid]$ java DruidPollConnUtils
100
true
Aug 19, 2020 11:05:41 PM com.alibaba.druid.pool.DruidDataSource info
INFO: {dataSource-1} inited
total insert 7 rows
f1

总结
本文仅是简单示例,实际系统中对代码的书写应更加规范。

最后修改时间:2020-08-26 13:26:59
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论