⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbenvinit.java

📁 linux 网络监控 。主要是对Linux系统的网络数据进行监控。
💻 JAVA
字号:
package pub.conn;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;

import pub.log.LogOutPut;



/**
 * 数据库环境初始化类,封装了两个函数工具,完成对数据库的连接。
 * 2009-03-19.
 * 
 * @author		zhengguohua
 * @version	1.0
 * @since		JDK1.6(建议)
 */
public class DBEnvInit {
	
	/** The instance. */
	private static DBEnvInit instance = null;
	
	private static List<Connection> connlist = Collections.synchronizedList(new LinkedList<Connection>());
	
	private static Properties prop = new Properties();
	/**
	 * The Constructor.
	 */
	public DBEnvInit(){
		prop =  getDBParamter();
		String driver = prop.getProperty("driver");
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			LogOutPut.getInstance().info("加载驱动程序失败-驱动不存在");
			e.printStackTrace();//加载驱动程序失败-驱动不存在。
		}
	}
	
	/**
	 * 单例模式,保证系统只有一个DBEnvInit存活.
	 * 
	 * @return 返回DBEnvInit对象
	 */
	public static synchronized DBEnvInit getInstance(){
		if (instance == null){
			instance = new DBEnvInit();
		}
		return instance;
	}
	
	/**
	 * 负责从属性文件读取数据库连接参数.
	 * 
	 * @return  返回NULL就表示失败
	 */
	private Properties getDBParamter(){
		InputStream in = null;
		Properties prop = null;
		try {
			String db_properties = "db.properties";
			prop=new Properties();
			if(!(new File(db_properties)).exists()){
				db_properties = "./bin/" + db_properties;
			}
			in = new FileInputStream(db_properties);
			prop.load(in);
		} catch (FileNotFoundException e) {
			return null;
		} catch (IOException e) {
			return null;
		} finally {
			try {
				in.close();
			} catch (IOException e) {
				in = null;
				e.printStackTrace();
			}
		}
		return prop;
	}
	
	/**
	 * 负责根据连接属性打开与数据库的连接.
	 * 
	 * @param prop the prop
	 * 
	 * @return 返回NULL表示数据库连接失败。失败的原因:驱动不存在、连接参数错误。
	 */
	private Connection getConnection(Properties props){
		Connection con = null;
		try {
			String driver = props.getProperty("driver");
			Class.forName(driver);
			con = DriverManager.getConnection(props.getProperty("url"),
					props.getProperty("user"),
					props.getProperty("password"));
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return null;//数据库连接失败-驱动不存在
		} catch (SQLException e) {
			e.printStackTrace();
			return null;//数据库连接失败-连接错误
		}
		return con;
	}
	/**
	 * 负责创建一个数据库联接.
	 * 
	 * @param prop the prop
	 * 
	 * @return 返回NULL表示数据库连接创建失败。
	 */
	private void createConnection(){
		try {
			LogOutPut.getInstance().info("创建了一个连接...");
			Connection con = DriverManager.getConnection(prop.getProperty("url"),
					prop.getProperty("user"),
					prop.getProperty("password"));
			LogOutPut.getInstance().info("真正创建了一个连接...");
			connlist.add(con);
		} catch (SQLException e) {
			e.printStackTrace();//数据库连接失败-连接错误
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 负责获取一个数据库的连接.
	 * 
	 * @param prop the prop
	 * 
	 * @return 返回NULL表示数据库连接获取失败。。
	 */
	public Connection getConnection(){
		Connection con = null;
		if(connlist==null || connlist.size()<1){
			createConnection();
		}
		for(Connection conn: connlist){
			con = conn;
			break;
		}
		return con;
	}
	
	/**
	 * 关闭和数据库的相关连接.
	 * 
	 * @param o Object对象。
	 */
	public  void close(Object o) {
		try {
			if (o instanceof ResultSet) {
				((ResultSet) o).close();
			} else if (o instanceof Statement) {
				((Statement) o).close();
			} else if (o instanceof Connection) {
				LogOutPut.getInstance().info("释放了一个连接.");
				connlist.remove(o);
				if(!(((Connection) o).isClosed())){
					((Connection) o).close();
				}
				o = null;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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