一.PreparedStatement 概述
在數據庫的操作過程中,PreparedStatement 對象是一個很不起眼但是記為重要的接口對象,它繼承 於Statement,並與之在兩方面有所不同:
1)PreparedStatement 實例包含已編譯的 SQL 語句。這就是使語句“准備好”。包含於 PreparedStatement 對象中的 SQL 語句可具有一個或多個 IN 參數。IN參數的值在 SQL 語句創建時未被指定。相反的,該語句為每個 IN 參數保留一個問號(“?”)作為占位符。每個問號的值必須在該語句執行之前,通過適當的setXXX 方法來提供。
2)由於 PreparedStatement 對象已預編譯過,所以其執行速度要快於 Statement 對象。因此,多次執行的 SQL 語句經常創建為 PreparedStatement 對象,以提高效率。
二.PreparedStatement應用實例
2.1第一步導入jar包
2.2 創建表t1
1 <body> 2 <% 3 //加載數據庫驅動給jdbc 4 Class.forName("org.gjt.mm.mysql.Driver"); 5 out.print("成功加載驅動"); 6 String url ="jdbc:mysql://127.0.0.1:3306/datebase?user=root&password=123456"; 7 //獲取數據庫連接,讓java可以操作mysql 8 Connection conn = DriverManager.getConnection(url); 9 //定義一條SQL命令創建一個名為t1的表 10 String sql = "create table t1(sno varchar(20),name varchar(20),birth String)"; 11 //從connection對象中,獲取一個sql執行者 12 PreparedStatement ps = conn.prepareStatement(sql); 13 //執行 14 ps.execute(); 15 out.print( conn ); 16 //首先關閉連接 18 ps.close(); 19 conn.close(); 20 %> 21 22 </body>
2.3 對t1表中的數據操作只需要將sql命令替換掉
<%
String sno="1";
String name="小明";
String birth="2008-08-24";
//加載數據庫驅動給jdbc Class.forName("org.gjt.mm.mysql.Driver"); out.print("成功加載驅動"); String url ="jdbc:mysql://127.0.0.1:3306/datebase?user=root&password=123456"; //獲取數據庫連接,讓java可以操作mysql Connection conn = DriverManager.getConnection(url); //定義一條SQL命令 String sql = "insert into student(sno,name,birth) values(?,?,?)"; //從connection對象中,獲取一個sql執行者 PreparedStatement ps = conn.prepareStatement(sql); //防止把代碼寫死
ps.setString(1,sno); ps.setString(2,name); ps.setString(3,birth); //執行 ps.execute(); out.print( conn ); //首先關閉連接 ps.close(); conn.close(); %> </body>
//增加信息
String sql="insert into t1(sno,name,birth) values(?,?,?)";
//更改信息
String sql1="UPDATE t1 SET birth=? where sno=?";
//刪除信息
String sql2="delete from t1 where sno=?";