2016-01-05 33 views
0

我有一个插入并返回一个整数(插入的行的id)的方法,我想用这个ID创建一个面板,但问题是当我创建时ID是空的面板。查询后的java集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; 
} 

什么建议吗?

回答

1

你需要指定要查询返回的自动生成键,试试这个:

stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);