Java 如何关闭().executeUpdate?
我想知道,如何在JAVA(JDBC)中关闭executeUpdate语句 例如:Java 如何关闭().executeUpdate?,java,sql,jdbc,Java,Sql,Jdbc,我想知道,如何在JAVA(JDBC)中关闭executeUpdate语句 例如: String sql = "UPDATE. .. . .. Whatever..."; ResultSet rs = stmt.executeQuery(sql); rs.close(); 但我不能这样做来更新。所以我在谷歌上搜索发现我需要使用executeUpdate,但是之后如何关闭语句呢 String sql = "UPDATE. .. . .. Whatever..."; int rs = stmt.
String sql = "UPDATE. .. . .. Whatever...";
ResultSet rs = stmt.executeQuery(sql);
rs.close();
但我不能这样做来更新。所以我在谷歌上搜索发现我需要使用executeUpdate,但是之后如何关闭语句呢
String sql = "UPDATE. .. . .. Whatever...";
int rs = stmt.executeUpdate(sql);
rs.close(); ??? <------
String sql=“更新……无论什么…”;
int rs=stmt.executeUpdate(sql);
rs.close() 您不关闭执行更新
,而是关闭语句
:
rs.close(); // Closes the ResultSet
stmt.close(); // Closes the Statement
通常最好使用以下方法:
try with resources将为您关闭语句
和结果集
。它是在Java7中添加的(2011年)
旁注:您已经展示了您正在使用语句
并调用executeUpdate(String)
。只要SQL中没有外部来源的信息(您没有从用户输入或其他系统收到任何信息,等等),就可以了。不过,在更常见的情况下,您可能希望使用PreparedStatement
,调用setXyz
来设置参数,然后调用executeUpdate()
(零参数版本)。这个习惯可以防止SQL注入。此有用站点上的更多解释和示例:。大多数情况下,当您更新表格时,您不会得到结果集ResultSet
,因此无需关闭ResultSet
只需关闭语句
,即OP正在使用JDK 7及更高版本(它支持自动关闭
@BuhakeSindi:是的,我要提到这一点。我希望人们正在使用JDK 7或更高版本,因为它已经存在好几年了。好的,谢谢。所以每次我执行stmt.execute或更新之后,我都必须关闭stmt吗?因为我一直重复使用stmt,直到最后,然后我连接了stm.close()@Nicky:不,当您完成语句时,您将关闭语句。请注意,在任何给定时刻,语句
实例上只能打开一个结果集
,因此在重用语句
获取另一个之前,请确保已完成第一个(或者不要重用语句
对象,我认为重用它没有任何真正的好处)。
String sql = "UPDATE. .. . .. Whatever...";
try (
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
) {
// Process results
}