私は奇妙な問題があります。データベースがあり、列の値を変更したい。値はArraylist(タイムリスト)で保護されています。Java:SQLクエリ:列を更新した後、rs.next()がfalseになる
右の行に値を書き込むために、私は2番目の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ループは最初の継代後も継続しませんが、終了します。
非常にintererstingなるほど、私は知りませんでした。私はこれを試してみる。ありがとう:) – aragonthebest
はいそれは今動作します。 2人のstatemantsを別々の変数に同時に宣言することは可能ですか? – aragonthebest
私は疑問に思っていませんか?あなたは好きなだけ多くのステートメントオブジェクトを持つことができます。疑問のあるコードを投稿できますか?そして、答えを受け入れることを忘れないでください:-) – Guenther