java try with resources:空结果集

时间:2018-05-21 13:23:03

标签: java sql prepared-statement try-with-resources

我正在尝试使用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());
    }
}

2 个答案:

答案 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)
   }
);