具体来说,如果我有三个查询,我应该
PreparedStatement singleQuery ...
和“分享”一个对象。或者我应该做什么
PreparedStatement query1 ...
PreparedStatement query2 ...
PreparedStatement query3 ...
答案 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语句并正确关闭准备好的语句就没有性能问题。
假设您使用单个准备好的语句,请确保您是否要将该语句用于第二个语句,并正确提供所需的变量。