dbconnection.java

来自「简易的java问答系统」· Java 代码 · 共 83 行

JAVA
83
字号
package cn.netjava.dbc;

import javax.sql.*;
import java.sql.*;

import org.apache.commons.dbcp.BasicDataSource;

/**
 * 数据库连接类,使用了DBCP 数据库连接池
 * 
 * @author XieChengmin
 * 
 */

public class DBConnection {

	private static DataSource ds = null;
	private static boolean poolOK = false;

	final static String DBDRIVER = "oracle.jdbc.OracleDriver";
	final static String DBURL = "jdbc:oracle:thin:@localhost:1521:ora9";
	final static String DBUSER = "mjk";
	final static String DBPWD = "mjk";

	/**
	 * 取得数据库连接
	 * 
	 * @return 一个数据池中的连接
	 */
	public static Connection getConn() {
		// 如果连接池未安装 或 连接池坏死, 安装连接池
		if (null == ds || false == poolOK) {
			ds = setupDataSource();
		}

		Connection con = null;
		
		try {
			con = ds.getConnection();
			poolOK = true;
			//检测连接是否有效,如果无效,会抛出异常
			con.prepareStatement("select * from tab");
		} catch (SQLException e) {
			poolOK = false;
			shutdownDataSource(ds);
			System.out.println("数据库意外关闭" + e);
		}
		return con;
	}

	/**
	 * 安装连接池
	 * 
	 * @return 连接池对象
	 * 
	 */
	private static DataSource setupDataSource() {
		BasicDataSource bds = new BasicDataSource();
		bds.setDriverClassName(DBDRIVER);
		bds.setUrl(DBURL);
		bds.setUsername(DBUSER);
		bds.setPassword(DBPWD);
		bds.setInitialSize(10);
		bds.setMaxActive(30);
		return bds;
	}

	/**
	 * 关闭连接池
	 */
	private static void shutdownDataSource(DataSource ds) {
		BasicDataSource bds = (BasicDataSource) ds;
		try {
			bds.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	private DBConnection() {
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?