我的问题是:如何实现一个“添加行”按钮,该按钮用自动增量++创建一个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
}
为什么你不让数据库增加你的ID,然后获取自动递增的ID值并将其转储到JTable上?因此,使用自动递增的ID在数据库中首先创建新行,然后将其读回以在JTable中显示它 – doNotCheckMyBlog 2012-08-17 03:47:41
使用插入语句和(?)值? – 2012-08-17 03:51:14
那么困难的部分是什么?只需插入没有值的行并在读取所有行的数量后读取最后一行的ID – doNotCheckMyBlog 2012-08-17 03:52:11