在java中使用PreparedStatement的正确方法是什么?

时间:2011-06-15 04:08:37

标签: java sql jdbc prepared-statement

具体来说,如果我有三个查询,我应该

PreparedStatement singleQuery ...

和“分享”一个对象。或者我应该做什么

PreparedStatement query1 ...
PreparedStatement query2 ...
PreparedStatement query3 ...

6 个答案:

答案 0 :(得分:5)

这取决于三个查询的不同之处。如果它们是相同的查询但具有不同的参数,则使用单个PreparedStatement并每次设置参数。如果它们基本上是三个不同的查询(例如,选择后跟更新),那么您将需要三个不同的PreparedStatement

例如,如果所有三个的SQL都是SELECT * FROM table WHERE id = something形式,那么单个语句就可以了。

如果第一个查询是SELECT name FROM customers WHERE id = ?而第二个查询是SELECT price FROM products WHERE id = ?,那么您将需要不同的对象。

答案 1 :(得分:3)

如果三个查询使用相同的SQL,则重用相同的对象。

如果没有,请有三个单独的对象。

不要跨多个线程共享同一个对象。

答案 2 :(得分:2)

如果查询不同,您可能需要单独的PreparedStatement,但如果一个参数化查询可以处理不同的查询,那么您应该走这条路。

答案 3 :(得分:1)

使用单个参数化查询并将其调用3次,每次绑定新参数值。如果您的数据库支持缓存预准备语句,您将获得更好的性能,因为实际查询只需要由RDBMS编译一次。

答案 4 :(得分:1)

通常,您将为每个查询使用单独的PreparedStatement对象;这样你就可以让他们重复使用,这可能会节省准备费用。

但是,如果您不打算重复使用您的陈述,那可能无关紧要。

答案 5 :(得分:0)

您可以以任何方式使用它,只要您打开Prepared语句并正确关闭准备好的语句就没有性能问题。

假设您使用单个准备好的语句,请确保您是否要将该语句用于第二个语句,并正确提供所需的变量。