jdbc的一些工具類的使用-第一篇
----建立連接和關閉
jdbc在使用過程中有大量的重複代碼,寫起來很費勁,那麼我們怎麼可以更省力氣呢,我們可以把一些代碼封裝起來,做一個工具類,也可以使用別人已經封裝好的工具類比如DbUtils, 下面我將簡單的講一講(複雜的我也不會).
寫一個連接數據庫的jdbc程序,分爲以下幾步:
1. java與數據庫建立連接,
2. java發送sql語句給數據庫,
3. 數據庫返回結果
4.關閉連接
其中第一步和第四步在所有jdbc代碼中都大同小異,所以我們可以將這兩個步驟的代碼封裝起來, 做成一個工具類.供以後使用.
首先, 建立一個class, 名字叫做JdbcUtil好了. 我們在建立連接的時候需要獲取連接對象, 有幾種方法,我不在這裏一一說明.由於在加載數據庫驅動器類的時候就已經註冊驅動了,所以我們直接用反射加載一下驅動器類:
我用的mysql:Class.forName("mysql.jdbc.Driver");這代碼可以放在靜態塊中,這樣可以在使用工具類時最先加載
然後,裏面寫上建立連接的方法和關閉連接的方法:所有代碼如下:
public class JdbcUtil {
private static String driverClass = null;
private static String url = null;
private static String user = null;
private static String password = null;
static {
// 類路徑獲取配置文件: 即可在java使用也可在web項目中使用
InputStream in = JdbcUtil.class.getResourceAsStream("/properties/db.properties");
// 獲取配置文件內容
Properties properties = new Properties();
try {
properties.load(in);
// 獲取驅動器類
driverClass = properties.getProperty("driverClass");
// 獲取url
url = properties.getProperty("url");
// 獲取用戶名,密碼
user = properties.getProperty("user");
password = properties.getProperty("password");
/**
* 註冊驅動器
* 會在驅動器類靜態塊中自動用
* java.sql.DriverManager.registerDriver(new Driver())
* 註冊,
* 所以不用創建對象,也不用重複註冊
*/
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 獲取連接
* @return
*/
public static Connection getConn() {
Connection conn = null;
try {
conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 關閉連接
*/
public static void close(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
其中,關閉連接的步驟一般還要關閉Statement或者PreparedStatement,所以我們再重載兩個close方法:
<pre name="code" class="java"><span style="white-space:pre"> </span>/**
* 重載方法1,
* 可關閉:
* Statement
* PerparedStatement
* CallableStatment
* @param conn
* @param stmt
*/
public static void close(Connection conn, Statement stmt) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
}
/**
* 使用DQL語句返回<span style="font-family: Arial, Helvetica, sans-serif;">結果集</span><span style="font-family: Arial, Helvetica, sans-serif;">時使用此重載方法</span>
* @param conn
* @param stmt
* @param result
*/
public static void close(Connection conn,
Statement stmt, ResultSet result) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if (result != null) {
try {
result.close();
} catch (SQLException e) {
e.printStackTrace();
}
result = null;
}
}
最基本的一個jdbcutil就完成了,自此以後,打開關閉連接就可以直接使用自己寫好的工具類了,
但是前面說的使用sql語句和獲取結果這步驟實際上也很相似,難道沒有辦法簡化嗎.當然有,但是會在我的下一篇裏面講(本來準備一下講完,但是餓了,我要去吃東西,bye)