Java 我是否应该使用准备好的语句插入一行?

Java 我是否应该使用准备好的语句插入一行?,java,jdbc,prepared-statement,Java,Jdbc,Prepared Statement,我刚刚发现,在我们的代码中,有些地方使用Prepared语句,尽管我们总是要在表中插入一行 我想知道当只插入一行时使用Prepared语句是否有一些开销值得修改此代码以使用语句。一个PreparedStatement是一个简单的语句的首选,因为它提供了一些针对SQL注入的安全性 在PreparedStatement中,检查每个参数的类型并自动转义。这意味着用插入字符串”是用PreparedStatement保存的,而不使用PreparedStatement时,您必须自己转义特殊字符 此外,您不能

我刚刚发现,在我们的代码中,有些地方使用Prepared语句,尽管我们总是要在表中插入一行


我想知道当只插入一行时使用Prepared语句是否有一些开销值得修改此代码以使用语句。

一个
PreparedStatement
是一个简单的
语句的首选,因为它提供了一些针对SQL注入的安全性

PreparedStatement
中,检查每个参数的类型并自动转义。这意味着用
插入
字符串
是用
PreparedStatement
保存的,而不使用
PreparedStatement
时,您必须自己转义特殊字符


此外,您不能将一些
字符串
插入到需要
数字的位置。

一个
PreparedStatement
是一个简单的
语句
的前缀,因为它为您提供了一些防止SQL注入的安全性

PreparedStatement
中,检查每个参数的类型并自动转义。这意味着用
插入
字符串
是用
PreparedStatement
保存的,而不使用
PreparedStatement
时,您必须自己转义特殊字符


此外,您不能在需要数字的地方插入一些字符串。

在安全方面,
准备好的语句
特别用于防止SQL注入攻击。关于效率,这在很大程度上取决于你所处理的陈述的性质。您还可能会发现另一个有趣的答案:


在安全方面,
准备好的语句
特别用于防止SQL注入攻击。关于效率,这在很大程度上取决于你所处理的陈述的性质。您还可能会发现另一个有趣的答案:


即使您的代码只插入一行,它也可能被多次调用,在这种情况下,
PreparedStatement
应该更快。至于
语句
它也需要在执行之前进行编译,因此它几乎不会更快

如果您的代码只插入一行,它可能会被多次调用,在这种情况下
PreparedStatement
应该更快。至于
语句
它也需要在执行之前进行编译,因此当您使用PreparedStement时,它几乎不会更快

,不仅查询执行更快,还有其他优点

  • 查询执行fast,因为PreparedStatement将结果放入数据库上预编译并重用的查询中
  • PreparedStatement,您的查询是动态的。也就是说,您只定义一次查询,然后使用不同的参数再次重用相同的查询。字符串连接也实现了这一点,但这是一种粗糙的方式。引用
要记住的重要一点是永远不要构造SQL语句 使用未选中输入值的字符串串联。创造 通过java.sql.Statement类进行的动态查询导致sql 注射

  • 当您使用PreparedStatement时,您可以。在Prepared语句中,您不使用字符串连接来添加运行时参数,而是在编译的查询中显式设置参数,并且PreparedStatement的JDBC驱动程序会自动转义传递的参数
使用PreparedStement时,不仅查询执行速度更快,还有其他优势

  • 查询执行fast,因为PreparedStatement将结果放入数据库上预编译并重用的查询中
  • PreparedStatement,您的查询是动态的。也就是说,您只定义一次查询,然后使用不同的参数再次重用相同的查询。字符串连接也实现了这一点,但这是一种粗糙的方式。引用
要记住的重要一点是永远不要构造SQL语句 使用未选中输入值的字符串串联。创造 通过java.sql.Statement类进行的动态查询导致sql 注射

  • 当您使用PreparedStatement时,您可以。在Prepared语句中,您不使用字符串连接来添加运行时参数,而是在编译的查询中显式设置参数,并且PreparedStatement的JDBC驱动程序会自动转义传递的参数