JDBC 用PreparedStatement語句動態操作SQL語句
阿新 • • 發佈:2019-01-11
1.Statement 和 PreparedStatement:
Statement介面只能操作靜態SQL語句(即SQL語句中操作的資料表,變數等等都是固定的,不能變化的)。而PreparedStatement介面則可以動態操作SQL語句(即SQL語句中的變數的值是可以變化的)。
2.問號“?”
問好的作用:在一個SQL語句中,把需要變化的部分用“?”代替。
如:String sql = “insert into mess(id,name)values(?,?)”;
3.PreparedStatement的用法:
(Connection conn ;)
1.PreparedStatement pstmt = conn.prepareStatement(SQL); //建立一個PreparedStatement物件,注入SQL語句
2.pstmt.setInt() ,pstmt.setString()// 給SQL中的?賦值
3.pstmt.execute()//執行SQL語句
示例如下:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class Test2 { public static void main(String[] args) { Insert(10, "tomy"); // 給資料庫插入一個數據(資料為 (10,“tomy”)) } static void Insert(int id, String name) { String sql = "insert into usertbl(id,name)values(?,?)"; Connection conn = DBUtil.open(); // 連線資料庫 try { /* 以下4句為關鍵 */ PreparedStatement pstmt = conn.prepareStatement(sql);// 裝載SQL語句 pstmt.setInt(1, id); // 給SQL中第一個問號賦變數id的值 pstmt.setString(2, name); // 給SQL中第二個問號賦變數name的值 pstmt.execute(); // 執行SQL語句 } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.close(conn);// 關閉資料庫 } } }