import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* 类描述:数据库连接工具类(单例模式)
* 类名称:DatabaseConnection
* 创建人: zyy
* 创建时间:2013-8-9 上午10:53:49
* @version 1.0
*/
public final class DBConnectionSimpleInstance {
private final static String DRIVER ="com.mysql.jdbc.Driver" ;
private final static String USERNAME = "root";
private final static String PASSWORD = "123456";
private final static String URL = "jdbc:mysql://localhost:3306/test1?useUnicode=true&charaterEncoding=UTF-8";
private Connection conn;
// private static DBConnectionSimpleInstance instance = new DBConnectionSimpleInstance();
private static DBConnectionSimpleInstance instance = null;
/**
* 构造方法私有化,只能在类的内部使用
* */
private DBConnectionSimpleInstance(){}
/**
* 功能:通过单例模式获取对象
* 1.延迟加载工具类,(提高效率)
* 特点:双重加锁
* */
public static DBConnectionSimpleInstance getInstance(){
if(instance==null){
//当两个线程同时到达时,要按顺序执行,(这里的代码只执行一次)
synchronized(DBConnectionSimpleInstance.class){
//第一个如果执行完成之后,第二个就不会执行
if(instance==null){
instance = new DBConnectionSimpleInstance();
}
}
}
return instance;
}
/**
* 加载到JVM便会执行
* */
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
new ExceptionInInitializerError("驱动加载失败");
}
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
/**
* 方法描述:查询操作关闭数据库连接
* 方法名:close
* 创建人:zyy
* 创建时间:2013-8-9 上午10:49:24
* @param rs
* @param st
* @param conn
* 返回值:void
*/
public static void close(ResultSet rs,Statement st,Connection conn){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(st!=null)
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
/**
* 方法描述:更新操作关闭连接
* 方法名:close
* 创建人:zyy
* 创建时间:2013-8-9 上午10:49:42
* @param st
* @param conn
* 返回值:void
*/
public static void close(Statement st,Connection conn){
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}