java在查询后设置id

标签 java mysql swing

我有一个方法可以进行插入并返回一个整数(插入行的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/

相关文章:

java - 如何在 Spring Boot 中捕获 `Request processing failed` 的客户端参数错误?

java - 在静态 try-catch 中分配静态最终变量

java - 高分辨率处理输出

mysql - MySQL如何检测中文字符?

java - 需要帮助添加用户功能的难度选项

java - 找不到与标签上给定名称匹配的资源

mysql - SQL:如何查找包含特定分钟数的日期时间?

php - MySQL获取所有有 child 的 parent

java - AWT-EventQueue-0“java.lang.ArrayIndexOutOfBoundsException : 0 error for JTable

java - Keylistener 不适用于 JPanel