2012-08-17 64 views
0

我的問題是:如何實現一個「添加行」按鈕,該按鈕用自動增量++創建一個JTable的新行(從SQLite數據庫獲取數據)最後一行ID。 id列已經有數據自動增量,現在我知道只是爲了創建一個新行,所有字段都是空白的(沒有增加最新一行的++)。 請有人幫忙嗎?在最後一行添加自動增量的JTable中的行ID

private void cmd_newrowActionPerformed(java.awt.event.ActionEvent evt) { 
    ((DefaultTableModel) PrimaryTable.getModel()).addRow(new Vector()); 
} 

我想要什麼:

================== 
id | data  | 
================== 
1 | some_data | 
2 | some_data | 
3 | some_data | 
================== 


After I press addRow button: 

================== 
id | data  | 
================== 
1 | some_data | 
2 | some_data | 
3 | some_data | 
4 | blank  |  /// blank row data with an autoincrement of the row id 
================== 

UPDATE:

好了,現在我明白瞭如何插入新行插入到數據庫中,但我不知道該怎麼更新JXTable。因此,它起作用的波紋管代碼以及在重新啓動應用程序後更新的新空白行。有人可以幫助我嗎?

private void cmd_newrowActionPerformed(java.awt.event.ActionEvent evt) { 
    try { 
     String sql = "Insert into RDSSPrimaryTable (sample_no,mineral_name,chemical_formula,main_peaks,other_peaks,reference,link,comments,spectrum) values (?,?,?,?,?,?,?,?,?)"; 

     pst = conn.prepareStatement(sql); 
     // no pst.setString for id - it takes automatically 

     pst.setString(1, txt_sample_pt.getText()); 
     pst.setString(2, txt_mineral_pt.getText()); 
     pst.setString(3, txt_chemical_pt.getText()); 
     pst.setString(4, txt_main_pt.getText()); 
     pst.setString(5, txt_other_pt.getText()); 
     pst.setString(6, txt_reference_pt.getText()); 
     pst.setString(7, txt_link_pt.getText()); 
     pst.setString(8, txt_comments_pt.getText()); 
     pst.setBytes(9, person_image); 

     JOptionPane.showMessageDialog(null, "Inserted"); 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 

    } 

    ((DefaultTableModel) PrimaryTable.getModel()).fireTableDataChanged(); // I tried this method even if the DefaultTableModel fire table automatically. 

    PrimaryTable.repaint(); //tried also repaint, revalidate - nothing happens 

} 
+0

爲什麼你不讓數據庫增加你的ID,然後獲取自動遞增的ID值並將其轉儲到JTable上?因此,使用自動遞增的ID在數據庫中首先創建新行,然後將其讀回以在JTable中顯示它 – doNotCheckMyBlog 2012-08-17 03:47:41

+0

使用插入語句和(?)值? – 2012-08-17 03:51:14

+0

那麼困難的部分是什麼?只需插入沒有值的行並在讀取所有行的數量後讀取最後一行的ID – doNotCheckMyBlog 2012-08-17 03:52:11

回答

0

使用在數據庫中創建一個序列下面的代碼

CREATE SEQUENCE sample_number 
    START WITH  1 
    INCREMENT BY 1; 

之後,在你的代碼中對其進行以下更改:

String sql = "Insert into RDSSPrimaryTable (sample_no,mineral_name,chemical_formula,main_peaks,other_peaks,reference,link,comments,spectrum) values (sample_number.nextval(),?,?,?,?,?,?,?,?)"; 

pst = conn.prepareStatement(sql); 

pst.setString(1, txt_mineral_pt.getText()); 
pst.setString(2, txt_chemical_pt.getText()); 
pst.setString(3, txt_main_pt.getText()); 
pst.setString(4, txt_other_pt.getText()); 
pst.setString(5, txt_reference_pt.getText()); 
pst.setString(6, txt_link_pt.getText()); 
pst.setString(7, txt_comments_pt.getText()); 
pst.setBytes(8, person_image); 
+0

謝謝你的時間。它由數據庫本身解決的增量行,其中第一列ID帶有AUTO INCREMENT選項。現在的問題是新創建的行不出現在JXTable中。在我重新啓動我的應用程序後出現。任何建議? – 2012-08-20 18:49:18

相關問題