jdbc一些工具類util.一

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)


發佈了26 篇原創文章 · 獲贊 82 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章