什么是JDBC?
JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API椎木,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問揖曾,它由一組用Java語言編寫的類和接口組成敌蜂。JDBC提供了一種基準漫仆,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應用程序,同時,JDBC也是個商標名窘拯。
java訪問數(shù)據(jù)庫,是通過接口的方式坝茎。每個數(shù)據(jù)庫的廠商會提供接口涤姊,所以,我只要去相應的數(shù)據(jù)庫官網(wǎng)下載嗤放,使用的時候只要用下載接口思喊,然后倒入接口。倒入Conector到lib中次酌,然后右鍵搔涝,Build Path? ->? add to build path
1.創(chuàng)建的sql文件如何導入數(shù)據(jù)庫。
通過source導入和措,注意此時導入是有正反斜杠的區(qū)分庄呈,\不能使用,因為是轉(zhuǎn)義字符派阱,必須使用\\或者/
例如:source F:/eclipse/workspace/shop01/sql.init.sql?
2.JDBC步驟
1.先導入Concetor中的jar包加入lib中诬留。
倒入Concetor到lib中,反正lib中贫母,并沒有加載到classpath中文兑,需要右鍵,Build Path ? -> ?add to build path
2.然后創(chuàng)建Connection 類腺劣。(切記)
有時候需要對數(shù)據(jù)庫進行操作時會出現(xiàn)以下錯誤绿贞,需要在url后添加一個useSSL=ture.
例如 ?Connection con = DriverManager.getConnection (url,user,password);
MySQL的JDBC URL編寫方式:jdbc:mysql://主機名稱:連接端口/數(shù)據(jù)庫的名稱(?參數(shù)=值)
例如 ?jdbc:mysql://localhost:3306/test_cwq
3.然后寫 sql語句。
String sql = “select * from t_user”
4.然后執(zhí)行sql語句需要statement
stat = con.createStatement(); ?
5.在獲取了stat之后橘原,如果執(zhí)行的是更新籍铁,直接使用stat.executeUpdate(sql)完成更新 ? ? 如果執(zhí)行的是查詢涡上,需要通過stat.executeQuery(sql)完成,返回值是一個ResuletSet的記錄集拒名。
圖下是更新操作
圖下是查詢操作
6.操作完成之后需要釋放連接吩愧,先釋放rs在釋放stat最后釋放con
例子:
try{
if(rs!=null)rs.close();
}catch(SQLException e){
e.printStackTrace();
}
7.重點。(如果使用Statement來執(zhí)行SQL有可能會存在SQL注入的攻擊增显,所以一般會使用PreparedStatement來替代Statement)
例子
為什么要用PreparedStatement替代Statement呢雁佳?
舉個例子 ?
```Select count(*) from t_user where username = '"+username +"' and password ='"password"';```
如果輸入的是 admin"';//用戶名 ?那么語句就被轉(zhuǎn)化為
Select count(*) from t_user where username = '"admin"';//"' and password ='"password"';
這樣的話密碼就被注釋了。然后網(wǎng)頁就被攻擊了同云。
用PreparedStatement 就不會出現(xiàn)這樣的問題糖权。