空结果集上的非法操作

时间:2014-04-20 21:48:54

标签: java

每当我在数据库库为空时第一次执行此代码时,我得到“空结果集上的非法操作”,但值仍然存储在数据库中。当我重新运行代码时,我得到“密钥1的重复条目'1000'”。当我在数据库中没有值并且连续重新运行时运行它时,我该怎么做才能使代码顺利运行?

ResultSet rs = stmt.executeQuery(id);    
rs.next();
int custId =1000;
if(rs.wasNull()) { 
    custId = 1000;
} else {
    custId =  rs.getInt(8)+1;
}                       
PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, name);
ps.setString(2, fname);
ps.setString(6, phone);
ps.setString(4, email);
ps.setString(5, sex);
ps.setString(7, date);
ps.setString(3, address);
ps.setInt(8, custId);

1 个答案:

答案 0 :(得分:0)

试试这个:

ResultSet rs = stmt.executeQuery(id);
boolean thisResultSetHasRecords;
if (rs.isBeforeFirst()) {
  thisResultSetHasRecords = true;
  while(rs.next()) {
    //do stuff with every record,
    //rs.next() returns false if empty or after last
  }
} else {
  thisResultSetHasRecords = false;
}

这一个

rs.wasNull()

检查现有行的列( - >非空ResultSet)是否具有SQL值NULL,不要与Java null混淆。

此外,您可能不需要手动增加id字段;你可以在表AUTO_INCREMENT中创建字段以避免第二个错误 - >见http://www.w3schools.com/sql/sql_autoincrement.asp