我有一个方法可以进行插入并返回一个整数(插入行的ID),我想用这个ID创建一个面板,但问题是当我创建面板时ID为空。
这是代码..
Integer id=null;
try {
id = db.insertProject(textField.getText(),textField_1.getText(),(String)comboBox.getSelectedItem());
MyPanel p1 = new MyPanel(id,textField.getText(),textField_1.getText(),"laptop.png");
pan5.revalidate();
pan5.repaint();
pan5.add(p1,new BoxLayout(p1, BoxLayout.X_AXIS));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是方法 insertProject
public Integer insertProject(String nome,String desc,String cat) throws SQLException{
Integer id = null;
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String s = formatter.format(date);
String sql = "INSERT INTO progetto (name,descrizione,categoria,stato,data) VALUES ('"+nome+"','"+desc+"','"+cat+"',1,'"+s+"')";
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
try (ResultSet generatedKeys = stmt.getGeneratedKeys()) {
if (generatedKeys.next()) {
id = generatedKeys.getInt(1);
}else {
throw new SQLException("Creating project failed, no ID obtained.");
}
}
} catch (SQLException e) {
//
}
stmt.close();
return id;
}
有什么建议吗?
最佳答案
您需要指定您希望查询返回自动生成的键,请尝试以下操作:
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
关于java在查询后设置id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615017/