2

如果我的语法错误,希望您能纠正我。只有当 SELECT...WHERE 子句正确时,我才能在 Google 上进行检查。

我想检索student_id以在另一个查询中使用它,但似乎我从中得到的只是一个“0”。

在java文件中:

rst = stmt.executeQuery("SELECT student_id FROM students WHERE name= 'to_delete'");
sid = rst.getInt("student_id");

to_delete是一个字符串,此 java 文件将其作为必须返回student_id的方法的参数接收。它确实包含正确的字符串(我检查过)。

表“students”包含以下文件:student_id、name、year。我需要返回名为“to_delete”的 student_id。

我没有错误/异常,只是当我显示结果时,无论我输入什么名称,我都会看到 id: 0 。也许 rst.getString("column_name") 仅适用于 executeUpdate(...)?

先感谢您!

4

2 回答 2

3

next()在尝试从中获取任何内容之前调用结果集。每次要读取一行时,都通过调用 next 方法来遍历 ResultSet。当 next 返回 false 时,你就完成了。

这是下一个方法的 API 文档:

boolean next() 抛出 SQLException

将光标从其当前位置向前移动一行。ResultSet 游标最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。

当调用 next 方法返回 false 时,光标位于最后一行之后。任何需要当前行的 ResultSet 方法调用都将导致抛出 SQLException。如果结果集类型为 TYPE_FORWARD_ONLY,则供应商指定他们的 JDBC 驱动程序实现是返回 false 还是在后续调用 next 时抛出 SQLException。

如果当前行的输入流打开,则调用 next 方法将隐式关闭它。读取新行时会清除 ResultSet 对象的警告链。

返回: 如果新的当前行有效,则返回 true;如果没有更多行,则返回 false 抛出:SQLException - 如果发生数据库访问错误或在关闭的结果集上调用此方法

于 2012-07-02T14:02:59.707 回答
0

是的。问题是你应该在尝试从中获取之前调用 next()。否则你没有得到任何错误但没有结果。

于 2012-07-02T14:05:34.867 回答