您好,登錄后才能下訂單哦!
這篇文章主要介紹Java之PreparedStatement怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
可以通過調用 Connection 對象的 prepareStatement(String sql) 方法獲取 PreparedStatement 對象
PreparedStatement 接口是 Statement 的子接口,它表示一條預編譯過的 SQL 語句
PreparedStatement 對象所代表的 SQL 語句中的參數用問號(?)來表示(?在SQL中表示占位符),調用 PreparedStatement 對象的 setXxx() 方法來設置這些參數. setXxx() 方法有兩個參數,第一個參數是要設置的 SQL 語句中的參數的索引(從 1 開始),第二個是設置的 SQL 語句中的參數的值
代碼的可讀性和可維護性。
PreparedStatement 能最大可能提高性能:
DBServer會對預編譯語句提供性能優化。因為預編譯語句有可能被重復調用,所以語句在被DBServer的編譯器編譯后的執行代碼被緩存下來,那么下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中就會得到執行。
在statement語句中,即使是相同操作但因為數據內容不一樣,所以整個語句本身不能匹配,沒有緩存語句的意義.事實是沒有數據庫會對普通語句編譯后的執行代碼緩存。這樣每執行一次都要對傳入的語句編譯一次。
(語法檢查,語義檢查,翻譯成二進制命令,緩存)
PreparedStatement 可以防止 SQL 注入
PreparedStatement常用的方法:
void setObject(int parameterIndex, Object x, int targetSqlType)
parameterIndex the first parameter is 1, the second is 2, …占位符參數索引是從1開始的
其余也是如此:
void setInt(int parameterIndex, int x)
void setLong(int parameterIndex, long x)
void setString(int parameterIndex, String x)
void setBlob (int parameterIndex, Blob x)
void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
執行操作:
package com.atmf; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import org.junit.Test; public class SumUP { @Test public void getConnection() { Connection con = null; PreparedStatement ps = null; try { //1,加載配置文件 InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties"); Properties pr = new Properties(); pr.load(is); //2,讀取配置信息 String user = pr.getProperty("user"); String password = pr.getProperty("password"); String url = pr.getProperty("url"); String driverClass = pr.getProperty("driverClass"); //3.加載驅動 Class.forName(driverClass); //4,獲取連接 con = DriverManager.getConnection(url, user,password); String sql = "insert into customers(name,birth) value(?,?)"; //預編譯sql語句,得到PreparedStatement對象 ps = con.prepareStatement(sql); //5,填充占位符 ps.setString(1, "三明治"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse("2020-11-02"); ps.setDate(2, new java.sql.Date(date.getTime())); //6,執行操作 ps.execute(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { //7,關閉資源 try { if(ps != null) ps.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if(con != null) con.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
配置信息:jdbc.properties文件
user=root
password=123456
url=jdbc:mysql://localhost:3306/students
driverClass=com.mysql.jdbc.Driver
執行結果:
以上是“Java之PreparedStatement怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。