package com.accphr.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 数据库访问工具类(使用了单例模式和工厂模式)
 */
public class DBAccess {
	/* 驱动程序的名字 */
	private static String driver;

	/* 连接数据库用的URL */
	private static String url;

	/* 用户名 */
	private static String user;

	/* 密码 */
	private static String pwd;

	/* DBAccess类型的一个引用,用来持有自身的一个对象 */
	private static DBAccess self = null;

	/* 私有的构造方法,保证此类不能在外部进行实例化 */
	private DBAccess() {
		try {
			Properties pros = new Properties(); // 此类用于读取配置文件config.properties
			pros.load(DBAccess.class.getResourceAsStream("config.properties"));
			driver = pros.getProperty("driver");
			url = pros.getProperty("url");
			user = pros.getProperty("user");
			pwd = pros.getProperty("pwd");
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
	}

	/**
	 * 返回DBAccess类的一个实例
	 * 
	 * @return
	 */
	public static DBAccess newInstance() {
		if (null == self) {
			self = new DBAccess();
		}
		return self;
	}

	/**
	 * 返回数据库连接对象
	 * 
	 * @return Connection
	 */
	public Connection getConnection() {
		try {
			Class.forName(driver); // 加载驱动程序
			return DriverManager.getConnection(url, user, pwd); // 通过驱动程序管理器得到数据库连接对象
		} catch (Exception ex) {
			throw new RuntimeException(ex);
		}
	}

	public void close(Connection conn, Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
		close(conn);
	}

	public void close(Connection conn) {
		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public void close(Statement stmt) {
		if (null != stmt) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public void close(ResultSet rs) {
		if (null != rs) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		Connection conn = DBAccess.newInstance().getConnection();
		if (null != conn) {
			System.out.println("数据库连接成功!");
		} else {
			System.out.println("数据库连接失败!");
		}
	}
}
最近下载更多
3199625134  LV10 2022年5月19日
MarkLee 琥珀川  LV13 2021年7月7日
dsdfasfdf  LV1 2020年3月13日
qwqzbl  LV6 2019年11月14日
xp95323  LV14 2019年8月21日
xiaoxiao303  LV8 2019年3月4日
czp1068894  LV8 2017年6月23日
沉默的羔羊  LV13 2016年12月31日
haibin24  LV7 2015年1月27日
qianyunlai  LV1 2013年4月7日
最近浏览更多
zt3631877  LV9 2023年10月20日
polariss  LV4 2023年6月5日
akbar2020  LV9 2022年8月27日
3199625134  LV10 2022年5月19日
billzw  LV6 2022年2月13日
jimshao289015254  LV9 2021年12月31日
zhangtian1997  LV10 2021年10月8日
MarkLee 琥珀川  LV13 2021年7月7日
zxl201377  LV2 2021年6月30日
luo027 2021年5月1日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友