PreparedStatement和Statement的區別

使用Statement的時候:

Class.forName(driver);

conn = DriverManager.getConnection(url, username, password);

stmt = conn.createStatement();       //沒有預編譯sql

String sql;

sql="select * from stu_info";

ResultSet rs = stmt.executeQuery(sql);   //傳入sql語句

 

使用PreParedStatement的時候:

Class.forName("com.mysql.jdbc.Driver");

String sql = "update book set bookCount=? where id=?";

Connection conn = DriverManager.getConnection(url,username,password);

PreparedStatement ps = conn.prepareStatement(sql);   //連接數據庫時候預編譯sql語言

ps.setInt(1, bookCount);

ps.setInt(2, id);

ps.executeUpdate();//不需要再傳入sql

ps.close();

conn.close();

 

可以看出PreparedStatement在連接數據庫的時候會預編譯sql語言,所以執行多條sql語句時效率會高很多。並且PreparedStatement可以使用佔位符。最重要的是極大地提高了安全性,防止類似於 select * from tb_name = '隨意' and passwd = ' ' or '1' = '1';的惡意sql語法。執行一條sql語句時,Statement效率高

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章