Java 如何使用Resultset更新JDBC中的值
我想使用resultset将所有thd“id”的值更改为int k 我有错误,异常为空 我在updateInt(“ID”,k)处得到错误 错误: “无法抑制空异常。不允许自抑制”Java 如何使用Resultset更新JDBC中的值,java,sql,database,jdbc,resultset,Java,Sql,Database,Jdbc,Resultset,我想使用resultset将所有thd“id”的值更改为int k 我有错误,异常为空 我在updateInt(“ID”,k)处得到错误 错误: “无法抑制空异常。不允许自抑制” 尝试向代码中添加updateRow(),如下所示: rs.beforeFirst(); while (rs.next()) { if(rs.getInt("ID")!=k){ rs.updateInt("ID", k); rs.updateRow(); k++
尝试向代码中添加
updateRow()
,如下所示:
rs.beforeFirst();
while (rs.next()) {
if(rs.getInt("ID")!=k){
rs.updateInt("ID", k);
rs.updateRow();
k++;
}
}
并尝试替换rs.first()代码>带有rs.beforeFirst()代码>
尝试在处查看尝试向代码中添加updateRow()
,如下所示:
rs.beforeFirst();
while (rs.next()) {
if(rs.getInt("ID")!=k){
rs.updateInt("ID", k);
rs.updateRow();
k++;
}
}
并尝试替换rs.first()代码>带有rs.beforeFirst()代码>
试着看一看我用另一种方法找到了一个解决方案,它的工作,没有结果集
int k=1;
int oldId=1;
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
String urlCn="jdbc:derby://localhost:1527/myDb";
Connection cn = DriverManager.getConnection(urlCn, "omer", "1234");
Statement stmt = cn.createStatement();
String sql = "SELECT * FROM QUESTIONS";
ResultSet rs = stmt.executeQuery(sql);
PreparedStatement st;
while (rs.next()) {
st = cn.prepareStatement("update QUESTIONS set id = ? where id = ?");
oldId=rs.getInt("id");
if(oldId!=k){
st.setInt(1,k);
st.setInt(2,oldId);
st.executeUpdate();
}
k++;
}
rs.close();
cn.close();
}
catch (ClassNotFoundException ex) {
Logger.getLogger(addQuestion.class.getName()).log(Level.SEVERE, null, ex);
}
catch (SQLException ex) {
Logger.getLogger(addQuestion.class.getName()).log(Level.SEVERE, null, ex);
}
我用另一种方法找到了一个解决方案,它的工作,没有结果集
int k=1;
int oldId=1;
try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
String urlCn="jdbc:derby://localhost:1527/myDb";
Connection cn = DriverManager.getConnection(urlCn, "omer", "1234");
Statement stmt = cn.createStatement();
String sql = "SELECT * FROM QUESTIONS";
ResultSet rs = stmt.executeQuery(sql);
PreparedStatement st;
while (rs.next()) {
st = cn.prepareStatement("update QUESTIONS set id = ? where id = ?");
oldId=rs.getInt("id");
if(oldId!=k){
st.setInt(1,k);
st.setInt(2,oldId);
st.executeUpdate();
}
k++;
}
rs.close();
cn.close();
}
catch (ClassNotFoundException ex) {
Logger.getLogger(addQuestion.class.getName()).log(Level.SEVERE, null, ex);
}
catch (SQLException ex) {
Logger.getLogger(addQuestion.class.getName()).log(Level.SEVERE, null, ex);
}
哪一行给你null…我在updateInt(“ID”,k)处得到错误;检查表的数据类型。可能是因为ID是不允许编辑的自动编号。查看它是否也是防止重复ID的主键。K可以保留一个值,该值在以后的行中将被更新@Parfait id是常规类型,IntegerAutoNumber是带有特殊数据库名称的整数类型。你能确认它不是自动递增的吗?还有,它是主键吗?哪一行给你null…我在updateInt(“ID”,k)处得到错误;检查表的数据类型。可能是因为ID是不允许编辑的自动编号。查看它是否也是防止重复ID的主键。K可以保留一个值,该值在以后的行中将被更新@Parfait id是常规类型,IntegerAutoNumber是带有特殊数据库名称的整数类型。你能确认它不是自动递增的吗?还有,它是主键吗?