import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBConnection { public Connection conn = null; // 聲明Connection對(duì)象的實(shí)例 public Statement stmt = null; // 聲明Statement對(duì)象的實(shí)例 public ResultSet rs = null; // 聲明ResultSet對(duì)象的實(shí)例 private static String dbClassName = 'com.microsoft.jdbc.sqlserver.SQLServerDriver';//定義保存數(shù)據(jù)庫(kù)驅(qū)動(dòng)的變量 private static String dbUrl = 'jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM'; private static String dbUser = 'sa'; private static String dbPwd = 'sa'; public JDBConnection(String propertyFileName) {// 帶屬性文件名的構(gòu)造方法 Properties prop = new Properties();// 屬性集合對(duì)象 InputStream is = null; try { is = JDBConnection.class.getClassLoader().getResourceAsStream( propertyFileName);// 屬性文件輸入流 // is = new FileInputStream('src/' + propertyFileName); prop.load(is);// 將屬性文件流裝載到Properties對(duì)象中 is.close();// 關(guān)閉流 dbClassName = prop.getProperty('dbClassName'); dbUrl = prop.getProperty('dbUrl'); dbUser = prop.getProperty('dbUser'); dbPwd = prop.getProperty('dbPwd'); } catch (Exception e) { System.out.println('屬性文件 ' + propertyFileName + ' 打開失??!'); } try { Class.forName(dbClassName);// 1.注冊(cè)驅(qū)動(dòng) } catch (ClassNotFoundException e) { e.printStackTrace(); } } public JDBConnection() {// 默認(rèn)的不帶參數(shù)的構(gòu)造函數(shù) try { Class.forName(dbClassName);// 1.注冊(cè)驅(qū)動(dòng) } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() { Connection conn = null; try { // Class.forName(dbClassName);// 1.注冊(cè)驅(qū)動(dòng) conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);//2.建立與數(shù)據(jù)庫(kù)的鏈接 } catch (Exception ee) { ee.printStackTrace(); } if (conn == null) { System.err .println('警告: DbConnectionManager.getConnection() 獲得數(shù)據(jù)庫(kù)鏈接失敗.\r\n\r\n鏈接類型:' + dbClassName + '\r\n鏈接位置:' + dbUrl + '\r\n用戶/密碼' + dbUser + '/' + dbPwd); } return conn; } /* * 功能:執(zhí)行查詢語(yǔ)句 */ public ResultSet executeQuery(String sql) { try { // 捕捉異常 conn = getConnection(); // 調(diào)用getConnection()方法構(gòu)造Connection對(duì)象的一個(gè)實(shí)例conn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,//3.創(chuàng)建語(yǔ)句 ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(sql);//4.執(zhí)行查詢 } catch (SQLException ex) { System.err.println(ex.getMessage()); // 輸出異常信息 } return rs; // 返回結(jié)果集對(duì)象 5.結(jié)果處理 } /* * 功能:執(zhí)行更新操作 */ public int executeUpdate(String sql) { int result = 0; // 定義保存返回值的變量 try { // 捕捉異常 conn = getConnection(); // 調(diào)用getConnection()方法構(gòu)造Connection對(duì)象的一個(gè)實(shí)例conn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); result = stmt.executeUpdate(sql); // 執(zhí)行更新操作 } catch (SQLException ex) { result = 0; // 將保存返回值的變量賦值為0 } return result; // 返回保存返回值的變量 } /* * 功能:關(guān)閉數(shù)據(jù)庫(kù)的連接 */ public void close() {//6.釋放資源 try { // 捕捉異常 try { if (rs != null) { // 當(dāng)ResultSet對(duì)象的實(shí)例rs不為空時(shí) rs.close(); // 關(guān)閉ResultSet對(duì)象 } } finally { try { if (stmt != null) { // 當(dāng)Statement對(duì)象的實(shí)例stmt不為空時(shí) stmt.close(); // 關(guān)閉Statement對(duì)象 } } finally { if (conn != null) { // 當(dāng)Connection對(duì)象的實(shí)例conn不為空時(shí) conn.close(); // 關(guān)閉Connection對(duì)象 } } } } catch (Exception e) { e.printStackTrace(System.err); // 輸出異常信息 } } } |
|