0

データベース内にデータを挿入するのに問題があります.これは私のコードのようです..

rs = stat.executeQuery("Select * from students;");
while (rs.next()) {
    idNum = rs.getString("idNum");
    stat.executeUpdate(
        "INSERT INTO record VALUES (null,'" + idNum + "','" + descript +
             "'," + value + ",'" + user.getText() + "','" + timeStamp + "')"
                            );
}//while

ご覧のとおり、すべての学生のデータを挿入し、rs = stat.executeQuery("Select * from students;");すべての学生番号を取得したいidNum = rs.getString("idNum");のは、学生テーブル内の内容です。

idNum..............Name

11000001.........Leonardo

11000002.........David

11000003.........Robert

11000004.........Anna

11000005.........May

すべての idNum を取得したら、次のようにテーブル レコード内に挿入する必要があります。

idNum.........descript.........amount........blablablabla

11000001.......Fee...............30

11000002.......Fee...............30

11000003.......Fee...............30

11000004.......Fee...............30

11000005.......Fee...............30

問題は、最初の idNum のみが次のようにテーブル レコード内に挿入されていることです。

idNum.........descript.........amount........blablablabla

11000001.......Fee...............30
4

3 に答える 3

2

同じステートメント オブジェクト stat を 2 回使用しないでください。再利用すると、更新 (この場合は挿入) を実行することになり、ループしている結果セットが閉じられます。

于 2013-09-30T14:10:37.633 に答える
0

単一のステートメントを使用してデータをコピーできます。(パラメータを使用すると、特殊文字を含む文字列のフォーマットの問題を回避できます。)

PreparedStatement ps = conn.prepareStatement(
    "INSERT INTO record SELECT NULL, idNum, ?, ?, ?, ? FROM students");
ps.setString(1, descript);
ps.setInt   (2, value);
ps.setString(3, user.getText());
ps.setString(4, timeStamp);
ps.execute();
于 2013-09-30T17:06:21.540 に答える
0

ArrayList を使用して、学生テーブルからすべての idNum を格納します。次に、リストをループしてレコード テーブルに挿入します。

于 2013-09-30T14:22:04.293 に答える