1. 程式人生 > >java基礎之JDBC三:簡單工具類的提取及應用

java基礎之JDBC三:簡單工具類的提取及應用

註冊 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三:簡單工具類的提取及應用