1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.ResourceBundle; 8 9 //連接數據庫 10 public class JDBCUtils { 11 12 public static Connection conn ; 13 public static PreparedStatement pstmt ; 14 public static ResultSet rs ; 15 16 17 private static String driverClass ; 18 private static String url ; 19 private static String username ; 20 private static String password ; 21 22 static { 23 ResourceBundle rd = ResourceBundle.getBundle("dbconfig") ; 24 driverClass = rd.getString("driverclass") ; 25 url = rd.getString("url") ; 26 username = rd.getString("username") ; 27 password = rd.getString("password") ; 28 } 29 30 public static Connection getConn(){ 31 try { 32 Class.forName(driverClass) ; 33 conn = DriverManager.getConnection(url, username, password) ; 34 return conn ; 35 } catch (Exception e) { 36 e.printStackTrace(); 37 } 38 return null ; 39 } 40 41 //增刪改 42 public static boolean updateSQL(String sql,Object...objs){ 43 getConn() ; 44 int n = 0 ; 45 try { 46 pstmt = conn.prepareStatement(sql) ; 47 //指定參數的值 48 for (int i = 0; i < objs.length; i++) { 49 pstmt.setObject(i+1, objs[i]) ; 50 } 51 52 //執行sql語句 53 n = pstmt.executeUpdate() ; 54 } catch (SQLException e) { 55 e.printStackTrace(); 56 }finally{ 57 close(conn,pstmt,rs) ; 58 } 59 return n > 0 ? true :false ; 60 } 61 62 //查詢 63 public static ResultSet getResultSet(String sql,Object ...objs){ 64 getConn() ; 65 int n = 0 ; 66 try { 67 pstmt = conn.prepareStatement(sql) ; 68 //指定參數的值 69 for (int i = 0; i < objs.length; i++) { 70 pstmt.setObject(i+1, objs[i]) ; 71 } 72 73 //執行sql語句 74 rs = pstmt.executeQuery() ; 75 } catch (SQLException e) { 76 e.printStackTrace(); 77 } 78 return rs ; 79 } 80 81 //關閉連接的方法 82 public static void close(Connection conn ,Statement pstmt, ResultSet rs){ 83 if(rs != null){ 84 try { 85 rs.close() ; 86 } catch (SQLException e) { 87 // TODO Auto-generated catch block 88 e.printStackTrace(); 89 } 90 } 91 if(pstmt != null){ 92 try { 93 pstmt.close() ; 94 } catch (SQLException e) { 95 // TODO Auto-generated catch block 96 e.printStackTrace(); 97 } 98 99 } 100 101 if(conn != null){ 102 try { 103 conn.close() ; 104 } catch (SQLException e) { 105 // TODO Auto-generated catch block 106 e.printStackTrace(); 107 } 108 } 109 } 110 }
這段代碼是鏈接數據庫,其中第23行是讀取properties配置文件的,當初有點看不懂,那properties文件的作用是什么?properties文件是一種配置文件,主要用於表達配置信息,文件類型為*.properties,格式為文本文件,文件的內容是格式是"鍵=值"的格式,在properties文件中,可以用"#"來作注釋。具體一點的話,如下解釋:
配置信息用的。加上你寫一個方法來獲取配置信息的內容,也就是讀取.properties文件。方法設置返回值,可以用來返回等號后面的信息,比如你想獲取8888的話,只需要給寫的方法傳一個參數PORT,就能返回8888。工程里很多地方都會用到配置信息里的東西,如果沒有配置文件,將來要修改端口號或者HOST的時候就比較麻煩,需要改代碼。有配置文件就不一樣了,只修改配置文件里等號后面的數據就可以了。工程里其他地方用HOST和PORT都是用給讀取配置文件的方法傳參數的形式調用數據的,所以只修改配置文件的內容就能全部修改為想要的數據。最主要的是不用修改代碼,這點很重要,所以工作中配置文件往往比java代碼還要多。,當然不止是.properties類型的,更多的是.xml類型