我在我的java代码中运行一个简单的更新语句到一个oracle数据库(JDBC调用),它在找到记录时更新但是当记录不存在时我得到"java.sql.SQLException:ORA-01002:取消序列"例外.这是我的代码,为什么例外?我应该在哪里改进它.代码示例非常有用.
public String preformUpdate(String someValue){
ResultSet rs;
String result = "Update failed record not found.";
StringBuffer sb = new StringBuffer();
try{
conn = DBConnect.getInstance().dbOracleConnect();
StringBuffer sbUpdate = new StringBuffer();
sbUpdate = new StringBuffer("UPDATE sometable ");
sbUpdate.append("SET value1 = ? ");
sbUpdate.append("WHERE value2 = ?" );
ps = conn.prepareStatement(sbUpdate.toString());
ps.setString(1, "0");
ps.setString(2, someValue);
rs = ps.executeQuery();
if (rs.next()){
result = "Value updated";
}
}
catch (Exception e){
e.printStackTrace();
}
finally{
JDBCHelper.close(cs);
JDBCHelper.close(conn);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
您应该使用executeUpdate()而不是executeQuery()因为您没有触发SELECT.
int numberOfRowsAffected = ps.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
此方法返回数据库中实际更新的行数.