jdbc工具類BDutil.java
阿新 • • 發佈:2018-12-19
package util; import java.sql.*; public final class DButil { private static final String driver = "com.mysql.jdbc.Driver"; private static final String url = "jdbc:mysql://localhost:3306/runoob"; private static final String user = "root"; private static final String password = "123456"; // 此方法為獲取資料庫連線 public static Connection getConnection() { Connection conn = null; try { Class.forName(driver); // 載入資料庫驅動 if (null == conn) { conn = DriverManager.getConnection(url, user, password); } } catch (ClassNotFoundException e) { System.out.println("Sorry,找不到驅動"); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * * 無引數增刪改【Add、Del、Update】 * * * * @param sql * * @return int */ public static int executeNonQuery(String sql) { int result = 0; Connection conn = null; Statement stmt = null; try { conn = getConnection(); stmt = conn.createStatement(); result = stmt.executeUpdate(sql); } catch (SQLException err) { err.printStackTrace(); free(null, stmt, conn); } finally { free(null, stmt, conn); } return result; } /** * * 有引數增刪改【Add、Delete、Update】 * * * * @param sql * * @param obj * * @return int */ public static int executeNonQuery(String sql, Object... obj) { int result = 0; Connection conn = null; PreparedStatement pstmt = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { pstmt.setObject(i + 1, obj[i]); } result = pstmt.executeUpdate(); } catch (SQLException err) { err.printStackTrace(); free(null, pstmt, conn); } finally { free(null, pstmt, conn); } return result; } /** * * 無參查詢【Query】 * * * * @param sql * * @return ResultSet */ public static ResultSet executeQuery(String sql) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch (SQLException err) { err.printStackTrace(); free(rs, stmt, conn); } return rs; } /** * * 有參查詢【Query】 * * * * @param sql * * @param obj * * @return ResultSet */ public static ResultSet executeQuery(String sql, Object... obj) { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { pstmt.setObject(i + 1, obj[i]); } rs = pstmt.executeQuery(); } catch (SQLException err) { err.printStackTrace(); free(rs, pstmt, conn); } return rs; } /** * * 判斷記錄是否存在 * * * * @param sql * * @return Boolean */ public static Boolean isExist(String sql) { ResultSet rs = null; try { rs = executeQuery(sql); rs.last(); int count = rs.getRow(); if (count > 0) { return true; } else { return false; } } catch (SQLException err) { err.printStackTrace(); free(rs); return false; } finally { free(rs); } } /** * * 判斷記錄是否存在(帶引數) * * * * @param sql * * @return Boolean */ public static Boolean isExist(String sql, Object... obj) { ResultSet rs = null; try { rs = executeQuery(sql, obj); rs.last(); int count = rs.getRow(); if (count > 0) { return true; } else { return false; } } catch (SQLException err) { err.printStackTrace(); free(rs); return false; } finally { free(rs); } } /** * * 獲取查詢記錄的總行數 * * * * @param sql * * @return int */ public static int getCount(String sql) { int result = 0; ResultSet rs = null; try { rs = executeQuery(sql); rs.last(); result = rs.getRow(); } catch (SQLException err) { free(rs); err.printStackTrace(); } finally { free(rs); } return result; } /** * * 獲取查詢記錄的總行數(帶引數) * * * * @param sql * * @param obj * * @return int */ public static int getCount(String sql, Object... obj) { int result = 0; ResultSet rs = null; try { rs = executeQuery(sql, obj); rs.last(); result = rs.getRow(); } catch (SQLException err) { err.printStackTrace(); } finally { free(rs); } return result; } /** * * 釋放【ResultSet】資源 * * * * @param rs */ public static void free(ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException err) { err.printStackTrace(); } } /** * * 釋放【Statement】資源 * * * * @param st */ public static void free(Statement st) { try { if (st != null) { st.close(); } } catch (SQLException err) { err.printStackTrace(); } } /** * * 釋放【Connection】資源 * * * * @param conn */ public static void free(Connection conn) { try { if (conn != null) { conn.close(); } } catch (SQLException err) { err.printStackTrace(); } } /** * * 釋放所有資料資源 * * * * @param rs * * @param st * * @param conn */ public static void free(ResultSet rs, Statement st, Connection conn) { free(rs); free(st); free(conn); } }