java - JDBC 的结果集给了我两次查询的第一行。为什么?
问题描述
所以,这是代码:
...
try (Connection conn = DriverManager.getConnection(db_file);
Statement stmt = conn.createStatement()) {
ResultSet rs = null;
rs = stmt.executeQuery("select order_id from orders where user_id=" + user_id + ";");
if (!rs.isBeforeFirst() ) {
System.out.println("no orders");
} else {
do {
System.out.println(rs.getString("order_id"));
} while (rs.next());
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
...
我尝试在 sqlite db 上手动执行查询,这没关系,但是这段代码给了我所有的结果,但第一个结果两次。谁能帮我找出问题所在?
例如,如果 db 有来自该 user_id 的 3 个订单,则返回:
first
first
second
third
为什么会这样?
解决方案
谢谢大家,这就是问题所在。我只是将其更改为:
...
try (Connection conn = DriverManager.getConnection(db_file);
Statement stmt = conn.createStatement()) {
ResultSet rs = null;
rs = stmt.executeQuery("select order_id from orders where user_id=" + user_id + ";");
if (!rs.next()) {
System.out.println("no orders");
} else {
do {
System.out.println(rs.getString("order_id"));
} while (rs.next());
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
...
推荐阅读
- ios - 为什么在sceneView中physicsBody比视觉模型大?
- java - 什么是 RSA 加密中的“连接到系统的设备无法运行”错误?
- angular - 角度路由器:命名的出口似乎不适用于相对路由,也不适用于延迟加载的模块
- android - 通过 Android Studio 发送 shell 命令或类似于正在运行的 android 应用程序的东西
- r - 无法下载有关 rsconnect 的报告
- java - java 8将多个键映射到相同的值
- java - 这样声明的数组在哪里 int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } }; 在java中得到存储?
- c++ - 什么是 C++17 中 std::unary_function 的等效替代品?
- python-3.x - 通过检查 pandas 中指定的 8 个条件,从输入字典生成 df
- java - 卡夫卡流处理的巨大延迟