Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在结果集中使用getter_Java_Mysql_Resultset - Fatal编程技术网

Java 在结果集中使用getter

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();

我正试图编写java代码来访问一个“customer”表,其中包含“customer\u id”、“email”、“deliverable”和“create\u date”列

我有

        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()){
}