我在数据库中插入数据时遇到问题。这是我的代码看起来像..
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
答案 0 :(得分:2)
您不应该使用相同的语句对象统计两次:一旦重用,就是执行更新(在您的情况下是插入),它会关闭您正在循环的结果集。
答案 1 :(得分:0)
使用ArrayList存储学生表中的所有idNum。然后遍历列表以插入记录表。
答案 2 :(得分: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();