当前位置: 首页 > 知识库问答 >
问题:

如何在单击按钮而不清除现有行的情况下从数据库向jTable中添加新行

孟光耀
2023-03-14

如何从数据库向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个答案

微生雨泽
2023-03-14

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

以下请求评论后:

这是一种方法。

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中现有行的情况下,如何在单击按钮时从数据库向jTable中添加新行? 我尝试了很多方法。但是没有成功。救命 编辑:- 在所有答案的帮助下,我将代码更改为以下代码,但确定。但是这里我在 DefaultTableModel中* 得到一个错误 * 新密码 最新代码 **但是在这里我得到了NullpointException错误!以及如何选择jTable1作为以上代码中的表

  • 问题内容: 我有一个基于Swing的应用程序,其中包含一个。现在,我想使用唯一的行ID来更新或删除每一行。因此,我想向每行添加一个更新和删除按钮,它们具有支持ActionListener的功能。但是,我不知道如何使用NetBeans执行此操作。 问题答案: 要在列中显示按钮,您需要创建: 一个自定义渲染器以显示JButton 定制编辑器以响应鼠标单击 阅读Swing教程中有关如何使用表的部分。关于

  • 我想从java中的表中删除选定的行。该事件应在单击按钮时执行。如果有人帮助我,我会非常感激。。。 例如,有一个名为sub\U table的表,有3列,即sub\U id、sub\U name、class。当我从该表中选择一行并单击“删除”按钮时,应删除该特定行。。

  • 我有一个表,我用phpMyadmin数据库表中的数据填充,但我只希望根据我在文本字段中写入的id有一行。正如你在代码中看到的,我试着这么做,但我得到了一个-java。sql。SQLSyntaxErrorException:您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在第1行中使用接近“from inputs where id='11'”的正确语法;有什么建议或解决方案

  • 问题内容: 我正在使用此处找到的自定义表格模型。我已经使用该帖子中提供的建议更新了我的代码,并遇到了一个新问题。我对我的代码所做的改变是一个注入到我,以避免与线程的问题。完成此操作后,通过按按钮更新我的表的代码已停止工作。 用于初始化的代码如下: 我用来更新的代码如下: 我也尝试过使用,但这也不起作用。截至目前,更新的唯一方法是关闭并重新打开程序。具有我正在使用的,随着用户添加更多玩家,尺寸会增加

  • 我正在设计一个客户机交互应用程序,其中的需求如下:- null 在单元格焦点上按下ENTER键=只编辑单元格。 单元格焦点外+按下ENTER键=添加新行。 如果单元格焦点不在,请建议添加行。并编辑单元格焦点是否存在。