使用JDBC的新手,我想知道所有操作是否产生结果集.例如,我通过以下方式创建语句以插入/更新到数据库:
StringBuffer query1 = new StringBuffer("UPDATE table SET col1 = value, WHERE some_col = some_val");
PreparedStatement pstmt1 = con.prepareStatment(query1.toString());
ResultSet rs1 = pstmt1.executeQuery();
Run Code Online (Sandbox Code Playgroud)
那么这个代码片段在执行时是否会执行适当的更新并完成?或者我需要以某种方式处理结果集才能完成操作?
我在这里先向您的帮助表示感谢.
你应该使用PreparedStatement#executeUpdate()而不是executeQuery().它返回一个int指示受影响行的数量.
int affectedRows = preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
也就是说,以这种方式构造SQL字符串不是正常的习惯用法.您更愿意使用占位符?并使用PreparedStatementsetter来设置值.
String sql = "UPDATE table SET col1 = ? WHERE some_col = ?";
// ...
preparedStatement = connection.prepareStatment(sql);
preparedStatement.setString(1, col1);
preparedStatement.setString(2, someCol);
int affectedRows = preparedStatement.executeUpdate();
// ...
Run Code Online (Sandbox Code Playgroud)