簡體   English   中英

JDBC中的PreparedStatement

[英]PreparedStatement in JDBC

當我們創建PreparedStatement的對象並像這樣執行查詢時

PreparedStatement stmt=con.prepareStatement("select * from emp");  
ResultSet rs=stmt.executeQuery(); 

如何重新編譯該語句並預編譯PreparedStatement?

當使用PreparedStatement對象從存儲內存位置數據的數據庫中獲取數據時?

它取決於JDBC引擎。 例如,用於MySQL的JDBC引擎通常實際上並不創建服務器端准備好的語句(請參閱MySQL文檔此SO問題 )。 在這些情況下, PreparedStatement接口僅在查詢和參數之間提供分隔,以保持清晰度並防止注入攻擊。 每次執行PreparedStatement ,它將通過一個完整的SQL查詢發送,然后MySQL服務器將對其進行解析,優化和執行。 另一方面,某些系統(包括帶有正確選項的MySQL-看到第二個鏈接)將使用“真實的”准備好的語句,這意味着它將僅被解析和優化一次。

但是,實際上,這就像要求java.util.List的內存特征一樣-這完全取決於實現,因此通常無法對接口進行有意義的回答。

在JDBC中,總是發生三件事:

  1)Query creation.

  2)Query compilation.

  3)Query Execution.

在PreparedStatement的情況下,高速緩存會顯示在圖片中,因此無需再次執行前兩個步驟。 因此,在PreparedStatement與Statement相反的情況下,僅執行最后一步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM