gpt4 book ai didi

Java:SQL 查询:更新列后 rs.next() 为假

转载 作者:行者123 更新时间:2023-11-30 10:38:51 26 4
gpt4 key购买 nike

我有一个奇怪的问题。我有一个数据库,我想更改列的值。这些值保存在 Arraylist(时间列表)中。

为了在右行中写入值,我有第二个 Arrylist(名单)。所以我想读取数据库中的第一行,然后检查名单并找到名称。比我从时间列表中取出匹配值并将其写入数据库到行中的“follows_date”列中,与名称匹配。

然后我读取数据库的下一行,直到没有更多的条目。

所以奇怪的是,如果我在数据库中不做任何更改,while(rs.next()) 部分会起作用。

例如:

ResultSet rs = statement.executeQuery("SELECT username FROM users");
while(rs.next()){

// read the result set
String name = rs.getString("username");
System.out.println("username = " + name); //liest die namen
}
}

这会逐个打印我的名字。但是当我更改表格时,while 循环在那之后结束。 (没有错误,程序刚刚结束)

ResultSet rs = statement.executeQuery("SELECT username FROM users");
while(rs.next()){

// read the result set
String name = rs.getString("username");
System.out.println("username = " + name); //writes the name

//look, if name is in Arraylist "namelist"). if yes, than write the matching date from "timelist" into the database.
if (namelist.contains(name)){
System.out.println("name found: "+ name);
int listIndizi = namelist.indexOf(name); //get index
Long indiziDatum = (long) timelist.get(listIndizi); //get date from same Index
System.out.println(indiziDatum); // print date so i can see it is correct (which it is)

statement.executeUpdate("UPDATE users SET follows_date ="+ indiziDatum +" WHERE username = '"+name+"'"); //updates the follows_date column

}
}

一切正常,除了现在,while 循环不会在第一段之后继续,而是结束。

最佳答案

一个语句的结果集是关闭的,如果你执行另一个语句,将不会返回进一步的结果。为更新创建一个新的单独语句对象,一切都应该正常工作。

Statement statement1 = connection.createStatement();
Statement statement2 = connection.createStatement();

ResultSet resultSet1 = statement1.executeQuery("SELECT username FROM users");
while(resultSet1.next()){
...
statement2.executeUpdate("UPDATE users ..."));
}

关于Java:SQL 查询:更新列后 rs.next() 为假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517769/

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