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创建的语句。)
这是我的代码
(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