欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-01 08:32:01
...

@[TOC]Linux下Druid连接池GBase 8s数据库配置


前言

Druid是目前比较流行的数据库连接池,已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。本文介绍Linux环境下Druid如何配置GBase 8s数据库。


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

一、Druid&GBase 8s是什么?

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

二、Druid配置

1.properties文件

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

内容如下(示例):

maxWait=12000
testWhileIdle=true
testOnBorrow=true
timeBetweenEvictionRunsMillis=60000
validationQueryTimeout=30000
defaultAutoCommit=true
removeAbandoned = true
removeAbandonedTimeout = 180
poolPreparedStatements = true
maxOpenPreparedStatements = 100

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();
			}
	}
}

需要注意的是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);

然后就可以进行编译和运行:
[[email protected] druid]$ javac DruidPollConnUtils.java
[[email protected] 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
[[email protected] 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


总结

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

相关标签: 数据库