This question already has an answer here:
Problem with adding rows with JDBC and MySQL?
                                
                                    (1个答案)
                                
                        
                                2年前关闭。
            
                    
我在更新mssql给定的结果集时遇到问题。

我想用添加(初始值和AmountDeposited)后找到的新值更新表(具有主键ID的createaccount)中的列(initial_deposit)。在名为(textFieldamount)的textField上,将AmountDeposited作为双精度值输入,并且initial也是结果集中的双精度值。

我收到一个错误。 (结果集不可更新(引用表没有主键)。

此结果集必须来自使用结果集类型ResultSet.CONCUR_UPDATABLE创建的语句。)

这是我的代码

String url = "jdbc:mysql://localhost:3306/STATTER_BANK";
String user = "root";
String password = "";
double amountDeposited = Double.parseDouble(textFieldamount.getText());

public void theQuery {
    String query1 = "SELECT initial_deposit FROM createaccount"+"WHERE id=1";

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection con = DriverManager.getConnection(url, user, password);
        PreparedStatement stt = con.prepareStatement(query1, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

       ResultSet rs = stt.executeQuery();

       while (rs.next()) {
           double initial = rs.getDouble("initial_deposit");
           rs.updateDouble( "initial_deposit", initial + amountDeposited);
           rs.updateRow();
       }
    } catch (Exception e ) {
        e.printStackTrace();
    }
}

最佳答案

你可以参考。
similar question perhaps it is the same one
使用ResultSet.TYPE_SCROLL_INSENSITIVE更改ResultSet.TYPE_SCROLL_SENSITIVE应该可以。

关于java - 无法从sql表更新结果集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53297403/

10-13 00:51