<>
驅動包,里面提供了接口和
實現 類
·JDBC開發步驟
o注冊驅動
o獲得連接
o獲取執行語句執行平臺
o執行sql語句
o處理結果
o釋放資源
·注冊數據庫驅動程序
使用java.sql.DriverManager類靜態方法registerDriver (Driver driver)
//Driver是一個接口(應該是在mysql驅動包里)
給Diver傳遞,Mysql驅動程序中的實現類
自己創建
DriverManager.registerDriver(newDriver());
//但是最好用靜態(反射技術)
Class.forName("com.mysql.jdbc.Driver");
·獲得數據庫連接
staticConnection
getConnection(Stringurl,Stringuser,Stringpassword)
試圖建立到給定數據庫URL的連接。
oDriverManager類中靜態方法
oStatic
Connection getConnection(String url,String user,String password);
o返回的是Connection接口的實現類,在mysql驅動程序
oUrl:數據庫地址:jdbc:mysql://連接主機ip:端口號//數據庫名字
Localhost本機
Stringrul="jdbc:mysql://localhost:3306//stone_db";
·獲取數據庫平臺
oCon調用方法導報:java.sql.*;
oStatement
createStatement();//獲取Statement對象,將sql語句發送到數據庫
o返回Statement
·執行sql語句
·Statement
int
executeUpdate(Stringsql)
執行給定SQL語句,該語句可能為INSERT、UPDATE或DELETE語句,或者不返回任何內容的SQL語句(如SQL DDL語句)。
oIntexecuteUpdate(String sql)執行數據庫中的sql語句,insert ,delete,Update
o返回受影響的行數int
/select的
executeQuery(Stringsql)
執行給定的SQL語句,該語句返回單個ResultSet對象。
ResultSet executeQuery(String sql); //可以執行sql語句
ResultSet rs=sql執行對象.executeQuery();
ResultSet接口方法
boolean next( );//
boolean
next()
將光標從當前位置向前移一行。
獲取內容:
GetInt(int
columnidex); //放第幾列
Getint
(String );//放列的名字
int
getInt(int?columnIndex)
以Java編程語言中int的形式獲取此ResultSet對象的當前行中指定列的值。
int
以Java編程語言中int的形式獲取此ResultSet對象的當前行中指定列的值。
//獲取字符串類型
getString(int?columnIndex)
以Java編程語言中String的形式獲取此ResultSet對象的當前行中指定列的值。
以Java編程語言中String的形式獲取此ResultSet對象的當前行中指定列的值。
·釋放資源
oClose();
·SQL注入攻擊
oOr 1=1
·防止SQL注入攻擊
oStatement接口實現類,有一個子接口PerparedStatement(SQL預編譯存儲,多次高效的執行SQL)
oConnection的方法返回一個PerparedStreamnet
oPrepareStatement(String sql)
o創建一個PrepareStatement對象
創建一個PreparedStatement對象來將參數化的SQL語句發送到數據庫。
這個SQL有點特殊
String sql="select * from表where user=? And pwd=?";
所有的參數都用?來表示(形式參數)
PreparedStatement pst=con.PreparedStatement(sql);
//把值給?號
Pst.setObject(1,第一個?號的值);
Pst.setObject(2,第二個?號的值);
//執行SQL
Pst.executeUpdate();//返回執行結果int
Pst.executeQuery();//返回ResultSet