谁能看到我是如何错过这个 ResultSet 的?我收到以下错误customerID = rs.getInt(1):
public boolean addCustomer(Customer customer) {
String customerSQL = "INSERT INTO Customer (first_name, last_name)"
+ "VALUES (?, ?)";
String emailSQL = "INSERT INTO Email (customer_ID, email_address, primary_email)"
+ "VALUES (?,?,?)";
int customerID = 0;
try (Connection connection = getConnection();
PreparedStatement customerPs = connection.prepareStatement(
customerSQL, new String[] {"CUSTOMER_ID"});
//PreparedStatement idPs = connection.prepareStatement(idSQL);
//PreparedStatement emailPs = connection.prepareStatement(emailSQL)
) {
customerPs.setString(1, customer.getFirstName());
customerPs.setString(2, customer.getLastName());
customerPs.executeUpdate();
ResultSet rs = customerPs.getGeneratedKeys();
System.out.println("Result Set: " + rs.toString());
customerID = rs.getInt(1);
System.out.print("Customer ID: " + customerID);
}
catch(SQLException e)
{
System.err.println("Error: " + e);
e.printStackTrace(System.out);
return false;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
输出
run:
Bill Joel
this@that.com
those@these.com
wank@that.com
Result Set: org.apache.derby.impl.jdbc.EmbedResultSet40@61c70928
Error: java.sql.SQLException: Invalid cursor state - no current row.
java.sql.SQLException: Invalid cursor state - no current row.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedResultSet.checkOnRow(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedResultSet.getColumn(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedResultSet.getInt(Unknown Source)
at customeremailmanager.CustomerDB.addCustomer(CustomerDB.java:78)
at customeremailmanager.CustomerEmailManager.main(CustomerEmailManager.java:24)
Caused by: java.sql.SQLException: Invalid cursor state - no current row.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 11 more
BUILD SUCCESSFUL (total time: 1 second)
Run Code Online (Sandbox Code Playgroud)
在从 ResultSet 对象中检索行之前,您必须调用ResultSet.next():
ResultSet rs = customerPs.getGeneratedKeys();
while(rs.next()){
System.out.println("Result Set: " + rs.toString());
customerID = rs.getInt(1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3963 次 |
| 最近记录: |