我正在尝试使用java try-with-resources语句更新数据库中的用户。但是我收到一条错误消息,表明我的结果集是空的。阅读过各种其他帖子之后,他们建议使用ps.executeUpdate()而不是ps.executeQuery(),但是这会返回一个int(表明明显很明显)没有“Auto closable”类型,这意味着代码可以甚至没有通过编译。
有没有人有一个如何绕过这个的例子?
public void updateUser (String id, String value){
try (Connection con = DriverManager.getConnection("jdbc:databasetype://localhost:5432/database");
PreparedStatement ps = createUpdateStatement(con, id, value);
ResultSet rs = ps.executeQuery())
{
System.out.println("Add operation completed");
} catch(Exception e) {
System.out.println("Exception: " + e.getMessage() + " Thrown by: " + e.getClass().getSimpleName());
}
}
答案 0 :(得分:1)
如果他们实施Closeable
,您只需要尝试资源。正如你所说,一个原始整数不能将它从try-with-resources移到body中:
public void updateUser (String id, String value)
{
try (Connection con = DriverManager.getConnection("jdbc:databasetype://localhost:5432/database");
PreparedStatement ps = createUpdateStatement(con, id, value))
{
int result = ps.executeUpdate();
System.out.println("Add operation completed");
} catch(Exception e) {
System.out.println("Exception: " + e.getMessage() + " Thrown by: " + e.getClass().getSimpleName());
}
}
答案 1 :(得分:0)
将try
移至try (Connection con = DriverManager.getConnection("jdbc:databasetype://localhost:5432/database");
PreparedStatement ps = createUpdateStatement(con, id, value)) {
ps.executeUpdate();
System.out.println("Add operation completed");
} catch(Exception e) {
System.out.println("Exception: " + e.getMessage() + " Thrown by: " + e.getClass().getSimpleName());
}
:
contract.methods.thu().send(
{ from: senderAddress,
gasPrice: web3.utils.toHex(GAS_PRICE),
gasLimit: web3.utils.toHex(GAS_LIMIT)
}
);