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 两次:一旦您重用执行更新(在您的情况下是插入),它会关闭您正在循环的结果集。

于 2013-09-30T14:10:37.633 回答
0

使用 ArrayList 存储学生表中的所有 idNum。然后遍历列表以插入记录表。

于 2013-09-30T14:22:04.293 回答
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 回答