如何在按钮单击时将新行添加到数据库中的jTable而不清除现有行

如何在按钮单击时将新行添加到数据库中的jTable而不清除jTable中的现有行?

我尝试了很多方法。 但没有成功。 帮帮我

String SQL = "SELECT name,price FROM items WHERE ID = ' "+jTextField1.getText()+" ' "; pst = Conn.prepareStatement(sql); rs = pst.executeQuery(); jTable1.setModel(DbUnits.resultSetToTableModel(rs)); 

编辑: –在所有答案的帮助下,我将代码更改为下面的代码,但好的。 但是我在DefaultTableModel中遇到错误

 String sql = "SELECT name,price FROM items WHERE ID = '"+jtxt1.getText()+"'"; pst = conn.prepareStatement(sql); rs=pst.executeQuery(); DefaultTableModel model = new DefaultTabelModel(new String[]{"Name","Price"},0); Vector row = new Vector(); while(rs.next()) { String d = rs.getString("name"); String e = rs.getString("price"); row.add(new Object[]{d,e}); model.addRow(row);} 

新规范

 String sql = "SELECT name,price FROM items WHERE ID = '"+jtxt1.getText()+"'"; pst = conn.prepareStatement(sql); rs=pst.executeQuery(); DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); Vector row = new Vector(); row.add(rs); model.addRow(row); 

最新代码

 ResultSetMetaData metaData; public void metaData() throws SQLException { this.metaData = rs.getMetaData(); } String sql = "SELECT name,price FROM items WHERE ID = '"+jtxt1.getText()+"'"; pst = conn.prepareStatement(sql); rs=pst.executeQuery(); int columnCount = metaData.getColumnCount(); Vector columnNames = new Vector(); for (int column = 1; column <= columnCount; column++) { columnNames.add(metaData.getColumnName(column)); System.out.println("ColumnNames "+columnNames ); } DefaultTableModel datamodel = new DefaultTableModel(columnNames, 0); jTable1.setModel(datamodel); while (rs.next()) { Vector vector = new Vector(); for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { vector.add(rs.getString(columnIndex)); } datamodel.addRow(vector); } 

**但是在这里我得到一个NullpointException错误! 我如何选择jTable1作为上面代码中的表?

处理ResultSet中的每一行数据并创建一个Vector,并使用此方法将数据插入表模型中。 您正在创建新的表模型并将其设置在表中,带有数据的旧模型将丢失。

在评论中提出以下要求后:

这是一种方法。

 Vector> data=new Vector<>(); //Fill this Vector above with the initial data Vector columns=new Vector(); //Fill this with column names DefaultTableModel tableModel=new DefaultTableModel(data, columns); JTable table=new JTable(tableModel); //Display the table as you like ... //Query the database and get the ResultSet (let's call it rs) while(rs.next){ Vector newRow=new Vector<>(); //Get the data from the resultset and fill this new row tableModel.addRow(newRow); }//while closing