我正在尝试使用列'customer_id','email','deliverrable'和'create_date'
来编写用于访问表'customer'的java代码我有
Connection conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
Statement constat = conn.createStatement();
String query = "SELECT * FROM customer WHERE customer_id LIKE " + customerId;
ResultSet rtn = constat.executeQuery(query);
Customer cust = new Customer(rtn.getInt("customer_id"), rtn.getString("email"), rtn.getInt("deliverable"), rtn.getString("create_date"));
conn.close();
return cust;
我收到错误:
java.sql.SQLException:在开始结果集之前
据我所知,我的错误是在我创建一个新的Customer对象的行中,但我无法弄清楚我做错了什么。谁能给我一些帮助?谢谢!
答案 0 :(得分:1)
在访问行的数据之前,您必须始终通过调用resultSet.next()
(并检查它返回true)转到下一行:
Customer cust = null;
if (rtn.next()) {
cust = new Customer(rtn.getInt("customer_id"),
rtn.getString("email"),
rtn.getInt("deliverable"),
rtn.getString("create_date"));
}
请注意,您还应该
答案 1 :(得分:0)
您应该致电ResultSet.first()
将结果移至第一个位置。结果集是一种编程约定,不会检索查询的整个结果并保留在内存中。因此,它的界面非常低级,您必须通过first()
,last()
或next()
等方法明确选择行(每个都返回true
以检查所请求的行index在集合中)
答案 2 :(得分:0)
您需要添加
rtn.next();
在使用结果集之前。
通常这是以
完成的while (rtn.next()) {
<do something with the row>
}