JDBC中PreparedStatement介面的執行邏輯

Nirvana8921發表於2018-03-27

PreparedStatement介面是Statement介面的子介面,其好處是建立PreparedStatement物件時直接使用Sql語句做引數,能自動解析和編譯Sql語句,省去了Sql語句拼接和編譯的麻煩,提高了安全性。

一、舉個例子來說明PreparedStatement物件的執行順序:

第1步:建立連線,建立DriverManager物件用Connection介面來接收,相當於撥通資料庫。

Connection conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/epet","root","0000");

第2步:建立prepareStatement物件,把SQL語句傳送到資料庫,自動執行。

PreparedStatement stmt =conn.prepareStatement("insert into dog"+"(name,health,love,strain) values (?,?,?,?)");

stmt.setObject(index,"值");


setObject()用法:
setObject(i+1,arg[i])用法與setInt(i+1,arg[i]),setString(i+1,arg[i])用法類似,
但不需指定引數型別,可以通用;
其中,第一個是指你SQL語句中的第幾個引數,第二個是要設定的值
 
舉個例子:SQL語句如下,
Select * From tableName Where id=? And Name=?
則:
pstmt.setInt(1,100)就表示此處id=100
pstmt.setString(2,"abc")就表示此處Name="abc"



第3步:呼叫prepareStatement的方法,跟資料庫說明要返回什麼資訊。

stmt.executeUpdate();

二、PreparedStatement物件的常用方法:

(1)int executeUpdate()方法,  返回的是增刪改操作影響的行數。

(2)ResultSet executeQuery()方法,返回的是查詢生成的ResultSet 物件,可以理解為由查詢結果組成的二維表。

(3)boolean exectute()方法,如果Sql的執行結果是ResultSet 物件,則返回ture,如果結果是更新計數或者沒有結果,則返回   false.

相關文章