2011-07-23 79 views
0

簡單的問題。我正在使用Java和MySQL數據庫。我想寫的數據庫訪問方法是什麼將使用PreparedStatement的方法,並會被參數,如:使用參數化和準備語句的數據庫訪問

public DBResult selectQueryWithParameters(String SQL, Object... params) 

我知道,你可以選擇查詢做到這一點,但對於DROP,創建和修改查詢什麼用執行(SQL)方法。同樣,您可以執行UPDATE,INSERT和DELETE查詢使用executeUpdate(SQL)方法的內容。我可以爲這些查詢編寫參數化方法嗎? 致以問候

回答

1

您可以使用Connection的prepareStatement方法來準備語句。然後你可以使用setInt,setString,setXX方法來設置參數。這適用於SELECT,UPDATE,INSERT和DELETE。

爲什麼要爲DROP,CREATE,ALTER創建PreparedStatement? CREATE TABLE stuff(message VARCHAR(?));

對我來說沒什麼意義。

+0

這是因爲當您放置的表作爲參數傳遞時,可能會動態完成DROP或ALTER等活動。由於安全性更好使用參數化方法來做到這一點。 PreparedStatement只是提高了性能。那麼,我的問題呢?我可以使這些方法參數化嗎? – ucas

+0

如果我沒有記錯,可以使用DROP,CREATE和ALTER的PreparedStatements。但是,您實際上不能在這些語句中使用參數。我沒有驗證此評論。所以你可以自己檢查一下。話雖如此,我認爲這是一種不好的做法。 DROP,CREATE和ALTER應該是罕見的事件,而不是您的應用程序的一部分。 – emory

相關問題