在第一个表中获取最后添加的id,并使用java将其插入另一个表中

时间:2017-08-15 14:27:21

标签: java mysql

我正在尝试将chapter表的最后添加ID插入lesson表。

这是我的代码:

String Sql = "INSERT INTO lesson"
            +"(title, chapter_id, source)"
            +"VALUES(?,?,?)";
String getId = "SELECT MAX(id) AS id FROM chapter";
rs = pst.executeQuery(getId);
int lastid = rs.getInt("id");
rs.close();
pst=conn.prepareStatement(Sql);
pst.setString(2,txt_lessonTitle.getText());
pst.setInt(3,lastid);
pst.setString(4,txt_lessonContent.getText());

pst.executeUpdate();

我收到了一个错误:

  

在开始结果集之前

3 个答案:

答案 0 :(得分:2)

你需要检查是否有一些结果

rs = pst.executeQuery(getId);
if (rs.next()) {
        int lastid = rs.getInt("id");
        rs.close();
        pst=conn.prepareStatement(Sql);
        pst.setString(2,txt_lessonTitle.getText());
        pst.setInt(3,lastid);
        pst.setString(4,txt_lessonContent.getText());

        pst.executeUpdate();
}

答案 1 :(得分:0)

试试这个:

int lastid;
rs.afterLast();
while (rs.previous()) {
    lastid = rs.getInt("id");
}
rs.close();

// other code statements can be here

答案 2 :(得分:0)

谢谢你们! .my错误在这里:

    pst.setString(2,txt_lessonTitle.getText());
    pst.setInt(3,lastid);
    pst.setString(4,txt_lessonContent.getText());

而不是使用

    pst.setString(1,txt_lessonTitle.getText());
    pst.setInt(2,lastid);
    pst.setString(3,txt_lessonContent.getText());

感谢您的回答和建议,它给了我答案。