jdbc中Statement和PreparedStatement有什么區別?哪個性能更好?


Statement和PreparedStatement的功能主要是對sql語句的執行

區別

(1)Statement每執行一條sql語句就需要生成一條執行計划,執行100條就需要100條執行計划PreparedStatement在執行相同

功能的sql語句,但僅僅是參數不同時,則只需要編譯一次,更適合批量處理

(2)PreparedStatement中的SQL語句是可以帶參數的,避免了用字符串連接拼接SQL語句的麻煩和不安全

例如sql語句

select * from user where id=1
select * from user where id=2

如果用Statement語句執行則需要生成兩個執行計划而PreparedStatement則只需要編譯一次,執行時僅僅是換個參數而已所以當

在執行大量的功能重復的語句時,效率會成百倍的提升。

兩者的使用:

首先連接數據庫    這都是相同的
String url = "jdbc:mysql://localhost:3306/test";  
String user = "root";
String password = "root";
String sql = "select * from goods where goodsid = 123";
DriverManager.registerDriver(new com.mysql.jdbc.Driver());//注冊數據庫驅動
Connection conn = DriverManager.getConnection(url, user, password);//連接數據庫
Statement在執行sql語句時不能再sql語句中設置參數

Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery(sql);
		while(rs.next()){
			int id = rs.getInt("goodsid");
			String name = rs.getString("goodsname");
			int price = rs.getInt("costprice");
			String manufacturer = rs.getString("manufacturer");
			System.out.println(id+"   "+name+"   "+price+"    "+manufacturer);
		}
		rs.close();
		conn.close();
		st.close();
PreparedStatement執行sql語句
PreparedStatement pst = conn.prepareStatement(sql1);
		pst.setInt(1,789);//第一個參數指的是sql語句中第幾個參數(問號),第二個參數為?處要填的值
		pst.setString(2, "大米");
		pst.setInt(3, 220);
		pst.setInt(4, 500);
		pst.setString(5,"大米公司");
		pst.executeUpdate();
		conn.close();
		pst.close();
參考:http://blog.csdn.net/jiangwei0910410003/article/details/26143977




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM