如何在按钮单击时将新行添加到数据库中的jTable而不清除现有行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在按钮单击时将新行添加到数据库中的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<String> columnNames = new Vector<String>();
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<String> vector = new Vector<String>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
vector.add(rs.getString(columnIndex));
}
datamodel.addRow(vector);
}
**但是在这里我得到一个NullpointErexception错误!我如何选择jTable1作为上面代码中的表?
答案
处理ResultSet中的每一行数据并创建一个Vector和use this method以将数据插入表模型中。您正在创建新的表模型并将其设置在表中,带有数据的旧模型将丢失。
在评论中提出以下要求后:
这是一种方法。
Vector<Vector<String>> data=new Vector<>();
//Fill this Vector above with the initial data
Vector<String> columns=new Vector<String>();
//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<String> newRow=new Vector<>();
//Get the data from the resultset and fill this new row
tableModel.addRow(newRow);
}//while closing
以上是关于如何在按钮单击时将新行添加到数据库中的jTable而不清除现有行的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jquery 在单击按钮时将 PHP 文件中的 HTML 加载/预置到 div 中