聲明我的理解是,對象不能用於開發企業應用程序,因爲它具有良好應用程序中的各種問題。爲什麼它在新版本中尚未被棄用?如果「準備」陳述優越,爲什麼需要「陳述」對象?
回答
Statement
是一個非常好的界面。有什麼不好的是通過將字符串連接在一起來創建查詢,特別是包含用戶輸入的字符串。如果你只發出不包含變量的常量查詢,那麼簡單的Statement
接口就可以很好地工作。
'Statement'是一個接口,實際上 – leonbloy
@leonbloy當然你是對的!固定。 –
聲明
使用通用訪問數據庫。在運行時使用靜態SQL語句時很有用。 Statement接口不能接受參數。
使用JDBC中聲明應該是100%本地化被用於DDL(ALTER, CREATE,GRANT等),因爲這些是不能接受BIND 變量唯一的語句類型。
的PreparedStatement
當您計劃使用SQL語句多次使用。 PreparedStatement接口在運行時接受輸入參數。
PreparedStatements或CallableStatements應該用於每種其他類型的語句 (DML,查詢)。因爲這些是接受綁定變量的語句類型。
似乎有點過分,像企業風格的導遊一樣橫行;爲什麼我們應該使用'PreparedStatement'作爲''SELECT COUNT(*)FROM USERS'「? –
JDBC驅動程序可以以不同的方式處理SQL語句。具體來說,在Oracle中,PreparedStatement想要綁定它看到的所有內容,如:NAME。
這對Oracle觸發器是有問題的,它使用:NEW和:OLD名稱來表示新舊行。
因此,當您嘗試使用PreparedStatement創建Oracle觸發器時,它將失敗,因爲沒有任何內容綁定到NEW /:OLD的引用。
您必須使用正常的Statement.execute()調用來執行此操作。
Out of Box答案.. :)謝謝 –
另外PreparedStatement比Statement更安全。
當您使用Statement並且您從用戶那裏獲得輸入並將其直接傳遞給查詢時請小心。
用戶可以使用SQL注入破解您的系統。
- 1. 準備好的陳述是什麼?
- 2. 案件陳述裏面如果陳述
- 3. 如果陳述「不是陳述」?
- 4. 如果陳述在案例陳述(VB.Net)
- 5. 需要幫助的PHP如果陳述
- 6. PHP如果陳述
- 7. 如果陳述在
- 8. 破碎的對象陳述
- 9. 爲什麼這些準備好的陳述不起作用?
- 10. PDO準備陳述:我們需要逃脫嗎?
- 11. 準備好的陳述中的遞歸
- 12. 準備好的陳述,很多字段
- 13. 準備好的陳述問題/ bindValue
- 14. 爲什麼如果陳述不符合我的要求呢?
- 15. 測驗 - 如果陳述
- 16. 如果陳述不正確
- 17. 如果陳述與arraylist
- 18. 如果陳述與空_Get
- 19. 如果陳述與OnScreenText
- 20. 如果陳述不正常?
- 21. OCaml。關於如果陳述
- 22. 打破如果陳述PHP
- 23. 單線如果陳述
- 24. 如果陳述不正確
- 25. php如果沒有陳述
- 26. 古怪如果陳述
- 27. 如果陳述在錨
- 28. 如果不是或陳述
- 29. 如果陳述使用onchronometerticklistener
- 30. 如果陳述在R
歡迎來到Stackoverflow!這聽起來像你在談論SQL語句。你指的是哪種編程語言和哪種數據庫訪問技術? – Joni
我指的是Java語句,用於JDBC連接的準備語句。 –
看看http://stackoverflow.com/a/3385295/1541533 –