單例模式建立工具類
阿新 • • 發佈:2019-01-31
/*
*
*JdbcUtilsSing.java
*
* 這是一個工具類,一般工具類不能被繼承,定義成final
* 不需要構造例項,用私有的構造方法
* 單例模式或者用static靜態程式碼塊,本例用單例模式
*
* */
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class JdbcUtilsSing {
private static String url = "jdbc:mysql://localhost:3306/jdbc";
private static String user = "root";
private static String password = "123456";
private static JdbcUtilsSing instance = null;
private JdbcUtilsSing() {
}
public static JdbcUtilsSing getInstance () {
if (instance == null) { // 延遲載入
synchronized (JdbcUtilsSing.class) { // 同步鎖
if (instance == null)
instance = new JdbcUtilsSing();
}
}
return instance;
}
// 註冊驅動
static {
try {
Class.forName("com.mysql.jdbc.Driver" );
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public void free(ResultSet rs, Statement st, Connection conn) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (st != null)
st.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
使用這個類
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Base {
public static void main(String[] args) {
try {
template();
} catch (Exception e) {
e.printStackTrace();
}
}
static void template() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 2.建立連線
conn = JdbcUtilsSing.getInstance().getConnection();
// 3.建立語句
st = conn.createStatement();
// 4.執行語句
rs = st.executeQuery("select * from user");
// 5.處理結果
while (rs.next()) {
System.out.println("id:" + rs.getObject(1) + "\tname:"
+ rs.getObject(2) + "\tbirthday:" + rs.getObject(3)
+ "\tmoney:" + rs.getObject(4));
}
// 6.釋放資源
} finally {
JdbcUtilsSing.getInstance().free(rs,st,conn);
}
}
}
比起static程式碼的方式稍微麻煩一點