是否存在差異以及使用哪種更好的做法:String.format()
並手動插入值或PreparedStatement
並將值解析爲佔位符(什麼是更多大小的代碼)?字符串格式(或類似函數)或PreparedStatement
1
A
回答
4
作爲一般規則,千萬不要使用純文本字符串格式其中PreparedStatement
可以使用。後者具有數據庫SQL語法的知識。並會照顧「屏蔽」每個特殊字符比你好得多。
不遵循該規則將導致代碼中SQL Injection的高風險。
2
有一個根本的區別:PreparedStatement
將不惜一切代價,這樣的價值觀,你喂到它(通過.set*()
方法)來作爲「中性」到數據庫(或者說, 「JDBC引擎」)。
請注意,PreparedStatement
是接口。因此,當爲這個或那個數據庫引擎使用JDBC驅動程序時,根據所述引擎的不同,它將能夠採取不同的行爲。
請不要使用String.format()
。它的角色非常不同! String.format()
無法防止SQL注入攻擊; PreparedStatement
可以,除非它的實現者真的做到了,確實是不好的工作。
相關問題
- 1. %和/或函數字符串格式
- 2. 正確的格式字符串的String.format或類似
- 3. Java與實例或字符串類似
- 4. 使用散列符號格式化數字的類或函數
- 5. 使用字符串或其他格式比較數據類型
- 6. 使用「..或列類似'字符串%'或...」來優化查詢「
- 7. 合併來自字符串或數組的類似數據
- 8. 的AppleScript:子字符串或格式HTML
- 9. Vectorize data.table like,grepl或類似的大數據字符串比較
- 10. 類型爲字符串或數字
- 11. MySQL格式化字符串或返回空字符串NULL
- 12. pdf格式爲csv python或類似
- 13. PNG到GeoJSON(或類似的格式)
- 14. coldfusion字符串函數或動態cfc
- 15. 替換字符串或爆炸()函數
- 16. 接受url或字符串的函數?
- 17. 字符串操作或遞歸函數?
- 18. OO方式或函數式字符串比較條件在php
- 19. Matlab:如何將字符數組或字符串轉換爲格式化輸出或解析字符串
- 20. PHP格式化字符串與MySQL數組結果類似
- 21. TypeError:期望的字符串或類似字節的對象(Python)
- 22. Tensorflow:TypeError:期望的字符串或類似字節的對象
- 23. 轉換日期或日曆類型爲字符串格式
- 24. 如何在DataRepeater中格式化數字或字符串?
- 25. 在d3格式化插值字符串或數字
- 26. 將時間字符串轉換爲時間或數字格式
- 27. wpf字符串格式化非數字或日期
- 28. 數字或貨幣的字符串格式?
- 29. 格式值可能是數字和/或字符串python 3
- 30. 顯示DateTime字符串或空字符串的函數
作爲一個方面說明,你正在尋求「更好的實踐」......但問「什麼是更多的代碼大小」。您應該認識到_quality_與_quantity_不一樣。 –