一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JAVA連接、操作數(shù)據(jù)庫的DBHelper

 鴻蛟家平 2021-07-17
  1 import java.sql.Connection;
  2 import java.sql.DriverManager;
  3 import java.sql.PreparedStatement;
  4 import java.sql.ResultSet;
  5 import java.sql.Statement;
  6 
  7 /**
  8  * 數(shù)據(jù)庫工具類,負(fù)責(zé)完成打開、關(guān)閉數(shù)據(jù)庫,執(zhí)行查詢或更新
  9  * @author MKing
 10  *
 11  */
 12 public class DbHelper {
 13     /**
 14      * 數(shù)據(jù)庫URL
 15      */
 16     private static final String URL = "jdbc:mysql://localhost:3306/bookstore";
 17     /**
 18      * 登錄用戶名
 19      */
 20     private static final String USER = "root";
 21     /**
 22      * 登錄密碼
 23      */
 24     private static final String PASSWORD = "12345";
 25     
 26     private static Connection connection = null;
 27     private static Statement statement = null;
 28 
 29     private static DbHelper helper = null;
 30 
 31     static {
 32         try {
 33             Class.forName("com.mysql.jdbc.Driver");
 34         } catch (ClassNotFoundException e) {
 35             e.printStackTrace();
 36         }
 37     }
 38 
 39     private DbHelper() throws Exception {
 40         connection = DriverManager.getConnection(URL, USER, PASSWORD);
 41         statement = connection.createStatement();
 42     }
 43 
 44     /**
 45      * 返回單例模式的數(shù)據(jù)庫輔助對象
 46      * 
 47      * @return
 48      * @throws Exception 
 49      */
 50     public static DbHelper getDbHelper() throws Exception {
 51         if (helper == null || connection == null || connection.isClosed())
 52             helper = new DbHelper();
 53         return helper;
 54     }
 55 
 56     /**
 57      * 執(zhí)行查詢
 58      * @param sql 要執(zhí)行的SQL語句
 59      * @return  查詢的結(jié)果集對象
 60      * @throws Exception
 61      */
 62     public ResultSet executeQuery(String sql) throws Exception {
 63         if (statement != null) {
 64             return statement.executeQuery(sql);
 65         }
 66 
 67         throw new Exception("數(shù)據(jù)庫未正常連接");
 68     }
 69 
 70     /**
 71      * 執(zhí)行查詢
 72      * @param sql  要執(zhí)行的帶參數(shù)的SQL語句
 73      * @param args  SQL語句中的參數(shù)值
 74      * @return  查詢的結(jié)果集對象
 75      * @throws Exception
 76      */
 77     public ResultSet executeQuery(String sql, Object...args) throws Exception {
 78         if (connection == null || connection.isClosed()) {
 79             DbHelper.close();
 80             throw new Exception("數(shù)據(jù)庫未正常連接");
 81         }
 82         PreparedStatement ps = connection.prepareStatement(sql);
 83         int index = 1;
 84         for (Object arg : args) {
 85             ps.setObject(index, arg);
 86             index++;
 87         }
 88         
 89         return ps.executeQuery();
 90     }
 91     
 92     /**
 93      * 執(zhí)行更新
 94      * @param sql  要執(zhí)行的SQL語句
 95      * @return  受影響的記錄條數(shù)
 96      * @throws Exception
 97      */
 98     public int executeUpdate(String sql) throws Exception {
 99         if (statement != null) {
100             return statement.executeUpdate(sql);
101         }
102         throw new Exception("數(shù)據(jù)庫未正常連接");
103     }
104     
105     /**
106      * 執(zhí)行更新
107      * @param sql  要執(zhí)行的SQL語句
108      * @param args  SQL語句中的參數(shù)
109      * @return  受影響的記錄條數(shù)
110      * @throws Exception
111      */
112     public int executeUpdate(String sql, Object...args) throws Exception {
113         if (connection == null || connection.isClosed()) {
114             DbHelper.close();
115             throw new Exception("數(shù)據(jù)庫未正常連接");
116         }
117         PreparedStatement ps = connection.prepareStatement(sql);
118         int index = 1;
119         for (Object arg : args) {
120             ps.setObject(index, arg);
121             index++;
122         }
123         return ps.executeUpdate();
124     }
125     
126     /**
127      * 獲取預(yù)編譯的語句對象
128      * @param sql  預(yù)編譯的語句
129      * @return  預(yù)編譯的語句對象
130      * @throws Exception
131      */
132     public PreparedStatement prepareStatement(String sql) throws Exception {
133         return connection.prepareStatement(sql);
134     }
135     
136     /**
137      * 關(guān)閉對象,同時將關(guān)閉連接
138      */
139     public static void close() {
140         try {
141             if (statement != null)
142                 statement.close();
143             if (connection != null) 
144                 connection.close();
145         } catch (Exception e) {
146             e.printStackTrace();
147         } finally {
148             helper = null;
149         }
150     }
151 }

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    国产精品丝袜美腿一区二区| 日韩精品免费一区二区三区 | 日本在线高清精品人妻| 国产日韩欧美专区一区| 久久成人国产欧美精品一区二区| 俄罗斯胖女人性生活视频| 久久精品国产亚洲av久按摩| 日韩一本不卡在线观看| 欧美人妻盗摄日韩偷拍| 精品熟女少妇av免费久久野外| 91插插插外国一区二区婷婷| 亚洲精品美女三级完整版视频| 欧美又黑又粗大又硬又爽| 欧美日韩一区二区综合| 日本熟妇熟女久久综合| 日韩欧美国产亚洲一区| 久久99午夜福利视频| 亚洲一区二区三区三州| 中文字幕人妻综合一区二区| 日本国产欧美精品视频| 亚洲天堂男人在线观看| 午夜福利视频六七十路熟女| 亚洲视频一级二级三级| 99香蕉精品视频国产版| 午夜精品久久久99热连载| 欧美午夜国产在线观看| 日本久久精品在线观看| 中国美女偷拍福利视频| 91天堂素人精品系列全集| 深夜日本福利在线观看| 久草热视频这里只有精品| 日韩国产中文在线视频| 欧美精品久久99九九| 国产一区二区三区草莓av| 国产一级片内射视频免费播放| 98精品永久免费视频| 偷拍偷窥女厕一区二区视频| 亚洲国产精品无遮挡羞羞| 欧美日韩精品综合在线| 98精品永久免费视频| 久久热九九这里只有精品|