Java 在结果集中使用getter
我正试图编写java代码来访问一个“customer”表,其中包含“customer\u id”、“email”、“deliverable”和“create\u date”列 我有Java 在结果集中使用getter,java,mysql,resultset,Java,Mysql,Resultset,我正试图编写java代码来访问一个“customer”表,其中包含“customer\u id”、“email”、“deliverable”和“create\u date”列 我有 Connection conn = DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword); Statement constat = conn.createStatement();
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:在结果集开始之前
据我所知,我的错误是在创建一个新的客户对象时出现的,但我无法找出我做错了什么。有人能帮我吗?谢谢 在访问该行的数据之前,必须始终通过调用
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"));
}
注意,您还应该
- 使用准备好的语句而不是字符串连接,以避免SQL注入攻击,并具有更健壮的代码
- 关闭finally块中的连接、语句和结果集,如果使用Java 7,则使用try with resources构造
first()
、last()
或next()
(每个都返回true
,以检查请求的行索引是否在集合中)等方法显式选择行。您需要添加
rtn.next();
在使用结果集之前
通常情况下,这是按照
while (rtn.next()) {
<do something with the row>
}
while(rtn.next()){
}