【发布时间】:2018-03-01 11:09:03
【问题描述】:
如何在单击按钮时从数据库中将新行添加到 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);
}
**但是在这里我得到一个 NullpointException 错误!以及如何选择 jTable1 作为上述代码中的表格?
【问题讨论】:
-
1) 为什么要向 Vector 添加一个数组?我当然希望这不是您在论坛接受的答案中找到的代码。我想看看你找到这个代码的链接吗?您应该直接将名称和价格添加到 Vector。 2)
I get an error in DefaultTableModel- 我们不是读心者,我们不知道错误是什么。同样,您是否在论坛中搜索了错误消息? 3) 你为什么要创建一个新的 DefaultTableModel。您的问题是关于向现有表模型添加新行。因此,您只需要对模型的引用,就可以使用 addRow(...) 方法。 -
是的。对不起打扰。 :\ 新代码有什么错误?
-
我放弃你没有听过任何建议。 1)您仍然没有发布错误消息。 2) 有人告诉您,您需要遍历 ResultSet 并一次添加一行数据。您的第一个编辑有循环,第二个编辑没有。 3) 有人告诉您将“名称”和“价格”添加到 Vector(而不是 ResultSet)。 4) 你被告知在论坛中搜索示例。有很多示例展示了如何向 Vector 添加数据。看来您还需要购买编程教科书。这是您在进行数据库编程之前应该了解的基本 Java。
-
错误 - 在 jTable 中没有显示任何内容,
-
但它可以按我的意愿工作!(可以逐行添加)(但该行中没有显示任何内容。
标签: java mysql swing netbeans-8