1. 程式人生 > >JAVA連接、操作數據庫的DBHelper

JAVA連接、操作數據庫的DBHelper

用戶 密碼 int null color 數據庫工具 關閉連接 || name

工廠模式的DBHelper

  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  * 數據庫工具類,負責完成打開、關閉數據庫,執行查詢或更新
  9  * @author MKing
 10  *
 11  */
 12 public class DbHelper {
 13     /**
14 * 數據庫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 * 返回單例模式的數據庫輔助對象 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 * 執行查詢 58 * @param sql 要執行的SQL語句 59 * @return 查詢的結果集對象 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("數據庫未正常連接"); 68 } 69 70 /** 71 * 執行查詢 72 * @param sql 要執行的帶參數的SQL語句 73 * @param args SQL語句中的參數值 74 * @return 查詢的結果集對象 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("數據庫未正常連接"); 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 * 執行更新 94 * @param sql 要執行的SQL語句 95 * @return 受影響的記錄條數 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("數據庫未正常連接"); 103 } 104 105 /** 106 * 執行更新 107 * @param sql 要執行的SQL語句 108 * @param args SQL語句中的參數 109 * @return 受影響的記錄條數 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("數據庫未正常連接"); 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 * 獲取預編譯的語句對象 128 * @param sql 預編譯的語句 129 * @return 預編譯的語句對象 130 * @throws Exception 131 */ 132 public PreparedStatement prepareStatement(String sql) throws Exception { 133 return connection.prepareStatement(sql); 134 } 135 136 /** 137 * 關閉對象,同時將關閉連接 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 }

JAVA連接、操作數據庫的DBHelper