有什么区别吗?有什么更好的做法:String.format()
手动插入值或PreparedStatement
解析值到占位符(代码的大小更多)?
问问题
1556 次
2 回答
4
作为一般规则,永远不要在可以使用的地方使用纯字符串格式。PreparedStatement
后者了解您的数据库 SQL 语法。并且会比你更好地“屏蔽”每个特殊字符。
不遵守该规则将导致代码中存在SQL 注入的高风险。
于 2013-06-24T16:39:26.223 回答
2
有一个根本的区别:aPreparedStatement
将尽其所能,以便您(通过方法)提供给它的值.set*()
对数据库(或者更确切地说,“JDBC 引擎”)来说是“中立的”。
注意PreparedStatement
是一个接口。因此,当为这个或那个数据库引擎使用 JDBC 驱动程序时,它将能够根据所述引擎采取不同的行动。
不要String.format()
为此使用。它的作用是完全不同的!String.format()
无法阻止 SQL 注入攻击;PreparedStatement
可以,除非它的实现者做得非常非常糟糕。
于 2013-06-24T16:48:50.327 回答