gpt4 book ai didi

java - 在结果集中使用 getter

转载 作者:行者123 更新时间:2023-11-29 14:28:17 24 4
gpt4 key购买 nike

我正在尝试编写 Java 代码来访问包含“customer_id”、“email”、“deliverable”和“create_date”列的表“customer”

我有

        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 对象的行中,但我无法弄清楚我做错了什么。有人能给我一些帮助吗?谢谢!

最佳答案

在访问该行的数据之前,您必须始终通过调用 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 注入(inject)攻击,并拥有更健壮的代码
  • 关闭finally block 中的连接、语句和结果集,或者如果使用Java 7,则使用try-with-resources构造

阅读JDBC tutorial

关于java - 在结果集中使用 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10520756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com