java基礎之JDBC三:簡單工具類的提取及應用
阿新 • • 發佈:2018-06-11
註冊 args 釋放資源 file void tex 用戶名 SQ lose
簡單工具類:
public class JDBCSimpleUtils { /** * 私有構造方法 */ private JDBCSimpleUtils() { } /** * 驅動 */ public static String driver = null; /** * 連接字符串 */ public static String url = null; /** * 用戶名 */ public static String user = null; /** * 密碼 */ public static String password = null; /** * 讀取配置文件, 並將讀取到的值賦值給變量. */ public static void readConfig() { try { //讀取properties配置文件給變量賦值 Properties pp = new Properties(); pp.load(new FileReader("day04_classTest\\src\\config.properties")); url= pp.getProperty("url"); user = pp.getProperty("username"); driver = pp.getProperty("driver"); password = pp.getProperty("password"); } catch (Exception e) { e.printStackTrace(); } } /** * 靜態代碼塊 * 變量賦值 * 並註冊驅動*/ static { try { //變量賦值 readConfig(); //註冊驅動 Class.forName(driver); } catch (Exception e) { //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); e.printStackTrace(); } } /** * 獲取Connection * * @return 數據庫連接 */ public static Connection getConnection() { try { return DriverManager.getConnection(url, user, password); } catch (SQLException ex) { //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); ex.printStackTrace(); return null; } } public static Statement getStatement(Connection conn) { if (conn == null) { return null; } try { return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 設置數據集可以滾動,可以更新 } catch (SQLException ex) { //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); release(conn); } return null; } /** * 獲取一個帶參數的 PreparedStatement * 該 PreparedStatement 已經設置數據集 可以滾動,可以更新 * * @param conn 數據庫連接 * @param cmdText 需要 ? 參數的 SQL 語句 * @param cmdParams SQL 語句的參數表 * @return 如果獲取失敗將返回 null,調用時記得檢查返回值 */ public static PreparedStatement getPreparedStatement(Connection conn, String cmdText, Object... cmdParams) { if (conn == null) { return null; } PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(cmdText, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); int i = 1; for (Object item : cmdParams) { pstmt.setObject(i, item); i++; } } catch (SQLException e) { e.printStackTrace(); release(conn, pstmt); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } return pstmt; } /** * 釋放資源 * * @param conn Connection * @param stat Statement * @param rs ResultSet */ public static void release(Connection conn, Statement stat, ResultSet rs) { try { if (rs != null) { rs.close(); rs = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } finally { try { if (stat != null) { stat.close(); stat = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } finally { try { if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } } } } /** * 釋放資源 * * @param conn Connection * @param stat Statement */ public static void release(Connection conn, Statement stat) { try { if (stat != null) { stat.close(); stat = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } finally { try { if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } } } /** * 釋放資源 * * @param conn Connection */ public static void release(Connection conn) { try { if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); //寫入日誌 //Logger.WriteLog(JDBCUtils.class.getName(),""); } } }
簡單工具類的應用:
public class DemoTest { public static void main(String[] args) { String sql1 = "SELECT * FROM users"; getResultSet(sql1); Object[] objs = new Object[2]; objs[0] = "123456789"; objs[1] = 2; String sql2 = "UPDATE users SET psw= ? WHERE uid= ?"; executeNoQuery(sql2, objs); } /** * 增刪改的方法 * * @param sql * @param obj */ private static void executeNoQuery(String sql, Object... obj) { //獲取Connection Connection conn = JDBCSimpleUtils.getConnection(); //獲取PreparedStatement PreparedStatement ps = JDBCSimpleUtils.getPreparedStatement(conn, sql, obj); try { int i = ps.executeUpdate(); if (i > 0) { System.out.println("ok"); } else { System.out.println("error"); } } catch (SQLException e) { e.printStackTrace(); } } /** * 查詢返回ResultSet * * @param sql */ private static void getResultSet(String sql) { //獲取Connection Connection conn = JDBCSimpleUtils.getConnection(); //獲取Statement Statement stat = JDBCSimpleUtils.getStatement(conn); ResultSet rs = null; try { rs = stat.executeQuery(sql); while (rs.next()) { int id = rs.getInt("uid"); String name = rs.getString("uname"); String psw = rs.getString("psw"); System.out.println(id + "--" + name + "--" + psw); } } catch (SQLException e) { e.printStackTrace(); } finally { JDBCSimpleUtils.release(conn, stat, rs); } } }
java基礎之JDBC三:簡單工具類的提取及應用