步驟:
1. 加載sql數據庫驅動
?Class.forName(“com.mysql.jdbc.Driver”);
2. 連接數據庫?
?con?=?DriverManager.getConnection(url,?username,?pwd);
3.獲得Statement??
stmt?=?con.createStatement();
4.寫入想要執行的sql語句 ?
eg:?String?sql?=?“select?*?from?student”;
5.操作數據庫
為方面理解下面是本人操作的數據庫內容:
package?com.wql.jdbc; import?java.sql.Connection; import?java.sql.DriverManager; import?java.sql.PreparedStatement; import?java.sql.ResultSet; import?java.sql.SQLException; import?java.sql.Statement;/** ?*?@author?wql ?* ?*/public?class?jdbc?{????public?static?void?main(String[]?args)?{????????///?加載sql數據庫驅動 ????????try?{ ????????????Class.forName("com.mysql.jdbc.Driver"); ????????}?catch?(ClassNotFoundException?e)?{????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????} ????????Connection?con?=?null; ????????Statement?stmt?=?null; ????????ResultSet?result?=?null; ????????PreparedStatement?pstm?=?null;//?預處理 ????????String?url?=?"jdbc:mysql://localhost:3306/work";?//?數據庫所在位置 ????????String?username?=?"root";?//?數據庫用戶名 ????????String?pwd?=?"123456";?//?數據庫密碼 ????????try?{????????????///?連接數據庫 ????????????con?=?DriverManager.getConnection(url,?username,?pwd);????????????///?獲得Statement ????????????stmt?=?con.createStatement();????????????///?寫入想要執行的sql語句 ????????????String?sql?=?"select?*?from?student";????????????///?獲得sql語句執行后的集 ????????????result?=?stmt.executeQuery(sql);????????????//?在控制臺打印出數據庫內容 ????????????System.out.println("學號"?+?"?姓名"?+?"????年????齡????"?+?"??性別");????????????while?(result.next())?{????????????????int?id?=?result.getInt(1);?//?這里對應數據庫中表的第一個字段屬性,接受內容的屬性要根據數據庫的屬性 ????????????????String?name?=?result.getString(2); ????????????????String?age?=?result.getString(3); ????????????????String?sex?=?result.getString(4); ????????????????System.out.println("?"?+?id?+?"??"?+?name?+?"?"?+?age?+?"?"?+?sex);/////////////////////下面有驗證截圖1?///////////////////////// ????????????}????????????//?用Statement向表中插入數據 ????????????String?sql2?=?"insert?into?student?values(9,"李麗","1990-12-25","女")";?????????? ????????????stmt.executeUpdate(sql2);//?更新數據/////////////////////下面有驗證截圖2?///////////////////////// ????????/////?上面用Statement操作數據庫十分麻煩,在一些特定場合可以使用預處理方法來操作數據庫 ????????????String?sql3?=?"insert?into?student?values(?,?,?,?)";///?插入數據 ????????????pstm?=?con.prepareStatement(sql3); ????????????pstm.setInt(1,?10);?///?前面的數字1代碼表中的第1字段,后面的9是要插入表中第1個字段的內容 ????????????pstm.setString(2,?"流星雨"); ????????????pstm.setString(3,?"1998-02-03"); ????????????pstm.setString(4,?"男"); ????????????pstm.executeUpdate();/////////////////////下面有驗證截圖?///////////////////////// ????????}?catch?(SQLException?e)?{????????????//?TODO?Auto-generated?catch?block ????????????e.printStackTrace(); ????????} ????} }
截圖1:
截圖2:
截圖3:
上面對數據庫的操作可以舉一反三,重點說下:預處理的好處:
jdbc連接預處理可以預防SQL注入,提高安全性。因為SQL語句在程序運行前已經進行了預編譯,在程序運行時第一次操作數據庫之前,SQL語句已經被數據庫分析,編譯和優化,對應的執行計劃也會緩存下來并允許數據庫已參數化的形式進行查詢,當運行時動態地把參數傳給PreprareStatement時, 即使參數里有敏感字符如 or’1=1’也數據庫會作為一個參數一個字段的屬性值來處理而不會作為一個SQL指令, 如此,就起到了SQL注入的作用了!
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END