如何在mysql的java文本字段中自动生成id

时间:2015-05-27 04:40:59

标签: java mysql

我尝试了什么:

try
    {
        PreparedStatement pstat = con.prepareStatement("insert into student_info values (?,?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS);
        pstat.setInt(1, Integer.parseInt(txtId.getText()));
        pstat.setString(2, txtFName.getText());
        pstat.setString(3, txtLName.getText());
        pstat.setString(4, gender);
        int result = pstat.executeUpdate();

        if(result > 0)
        {
            JOptionPane.showMessageDialog(null,"Data Inserted Succesfully !!!");
            txtId.setText("");              
            txtFName.setText("");
            txtLName.setText("");           
            bg.clearSelection();
            ResultSet rs = pstat.getGeneratedKeys();
            int newId= -1;
            if(rs != null && rs.next())
            {
                newId = rs.getInt(1);
                txtId.setText(String.valueOf(newId));
            }
        }
    }

我想要的是什么:

要在文本框中显示的新ID

未发生的事情:

新ID不会显示在文本字段中..

1 个答案:

答案 0 :(得分:3)

对您的代码进行此更改:

PreparedStatement pstat = con
    .prepareStatement("insert into student_info (firstname,lastname,gender) 
        values (?,?,?)", PreparedStatement.RETURN_GENERATED_KEYS); // omit id column
pstat.setString(1, txtFName.getText());
pstat.setString(2, txtLName.getText());
pstat.setString(3, gender);
int result = pstat.executeUpdate();
// now got fetch the generated id