ITPub博客

首页 > 数据库 > 国内数据库 > Linux下Druid连接池GBase 8s数据库配置

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

原创 国内数据库 作者:lc17 时间:2020-08-26 13:22:27 0 删除 编辑


前言

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


总结

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7699930/viewspace-2714766/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2020-08-26

  • 博文量
    2
  • 访问量
    930