如何从(SQLite)数据库加载的JTable中插入,更新和删除项目

用户名

我目前有2类,一种显示GUI,另一种是从数据库中获取项目。我的代码如下:

这段代码是在我的GUI中显示JTable

public void table() {
    if(SOMR.tableCall() == true) {
        this.columnNames = SOMR.getCol();
        this.data = SOMR.getData();
    JTable table = new JTable(data, columnNames)
    {
        public Class getColumnClass(int column)
        {

            for (int row = 0; row < getRowCount(); row++)
            {
                Object o = getValueAt(row, column);

                if (o != null)
                {
                    return o.getClass();
                }
            }

            return Object.class;
        }
    };

    JScrollPane scrollPane = new JScrollPane( table );
    add( scrollPane, BorderLayout.CENTER );
    }

}

并且此代码是检索项目并将它们传递给上述代码以显示检索到JTable的项目

public boolean table() {

    Connection connection = null;  
     ResultSet resultSet = null;  
     PreparedStatement preparedStatement = null;  
     try 
     {  
         Class.forName("org.sqlite.JDBC");  
         connection = DriverManager.getConnection("jdbc:sqlite:db");
         preparedStatement = connection.prepareStatement("SELECT item1, item2, item3 FROM menu WHERE can = ? AND id = ?");
         preparedStatement.setInt(1, can);
         preparedStatement.setInt(2, id);
         resultSet =  preparedStatement.executeQuery();
         ResultSetMetaData md = resultSet.getMetaData();
         columns = 3;//md.getColumnCount();
         for(int i = 1; i<=columns; i++) {
             columnNames.addElement(md.getColumnName(i));
         }
         while(resultSet.next()) {
             row = new Vector(columns);
             for (int i = 1; i<=columns; i++) {
                 row.addElement(resultSet.getObject(i));
             }
             data.addElement(row);
         }
         tablecall = true;
         return tablecall;
     }
     catch (Exception ex) 
     {  
         tablecall = false;
         ex.printStackTrace();  
     }
     finally 
     {  
         try 
         {  
             resultSet.close();  
             preparedStatement.close();  
             connection.close();  
         } 
         catch (Exception ex) 
         {  
             ex.printStackTrace();  
         }  
     }
    return tablecall;
}

我已经按照从数据库中的表显示JTable的方法进行了操作,但是我真的不知道如何从JTable中插入,更新和删除行并在数据库中进行更新,然后刷新JTable以便从新更新的显示数据库。

我想添加一个“添加项目”按钮,然后它将弹出带有要输入字段的框架/窗口,然后在弹出的框架中单击“添加”后,JTable和数据库将被同时更新。

有人可以帮我吗?我迷路了。非常感谢!

智者

我仍然不清楚您的要求,但是让我尽可能多地开始回答:

每个JTable对象都使用一个表模型对象来管理实际的表数据。表模型对象必须实现该TableModel接口。但是,DefaultTableModel它本身足以与表数据交互工作。查看它的Java文档以获取更多详细信息。

但是,要检测由表model对象管理的数据的更改modelJTable实例关联需要TableModelListener使用addTableModelListener()功能注册到接口的实现中侦听器将收到事件通知,TableModelEvent e以使用以下方法检查数据行中的更改和更改类型:

  • e.getFirstRow():返回更改的第一行的索引,包括由指定的表头 TableModelEvent.HEADER_ROW
  • e.getLastRow():更改的最后一行
  • e.getType():发生变化的单元格发生了什么:
    1. 如果插入了数据行e.getType() == TableModelEvent.INSERT
    2. 如果数据行被删除e.getType() == TableModelEvent.DELETE
    3. 如果数据行已更新e.getType() == TableModelEvent.UPDATE.

一个简短的例子:

model.addTableModelListener(new TableModelListener() {

     @Override
     public void tableChanged(TableModelEvent e) {
          int rowFirstIndex = e.getFirstRow();
          int rowLastIndex = e.getLastRow();

          DefaultTableModel model = (DefaultTableModel) e.getSource();
           if(e.getType()==TableModelEvent.UPDATE)
            {
                int updatedColIndex = e.getColumn();
                String updateColmn = table.getColumnName(updatedColIndex);
                String updatedValue = (String) model.getValueAt(rowFirstIndex, updatedColIndex);
                System.out.println("column: "+updateColmn+" value: "+updatedValue);
                updateDB(updateColmn, updatedValue);
            }

            else if(e.getType()==TableModelEvent.INSERT)
            {
             for(int i= rowFirstIndex; i <= rowLastIndex ; i++)  
              {   
                  Vector rowData = (Vector) model.getDataVector().get(i);

                  Map<String, String>dataMap = new HashMap<>();

                  for(int j=0; j < rowData.size() ; j++)
                    dataMap.put(table.getColumnName(j), (String) rowData.get(j));

                  InsertToDB(dataMap); // now it contains columndName corresponding to row value

              }
          }
         }
     });

编辑(根据您的评论)I am getting [value1, value2, value3]. How do I then use this with my SQL statement?

如果您有兴趣将行值与列名映射,那么就像构建SQL查询语法一样:vector包含包含维护column索引的行数据row.get(i)具有列索引的数据i您可以table.getColumnName(i)用来获取index处的列名,该列名与indexi处的行向量值相对应i

教程:

  1. 如何编写表模型侦听器

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据库中删除或插入后如何触发 Jtable 更新?

来自分类Dev

使用vb.net从Sql数据库中插入,更新和删除数据?

来自分类Dev

如何从 ListView 和 SQLite 数据库中删除项目?

来自分类Dev

直接在DataGrid中插入,更新和删除行,并将更改保存在数据库中

来自分类Dev

如何删除JTable中的项目也会从数据库中删除?

来自分类Dev

从数据库中删除项目后刷新jtable

来自分类Dev

如何从数据库中删除项目

来自分类Dev

如何从数据库中删除项目?

来自分类Dev

使用 PHP 更新和插入 SQL 数据库

来自分类Dev

SQLite数据库中的项目未在RecyclerView中删除

来自分类Dev

SQLite数据库中的项目未在RecyclerView中删除

来自分类Dev

在Phonegap for SQLite中插入,更新和删除问题

来自分类Dev

如何更新和删除表中的数据?

来自分类Dev

没有从SQlite数据库中删除项目

来自分类Dev

没有从SQlite数据库中删除项目

来自分类Dev

在Android中删除或更新SQLite数据库中的条目

来自分类Dev

将数据从jtable插入sqlite数据库

来自分类Dev

如何使用Xamarin表单中的SQLite更新数据库中的项目

来自分类Dev

异步删除和更新数据库中的项目

来自分类Dev

如何从Xamarin中的SQLite数据库删除数据

来自分类Dev

如何在表中插入更新和删除记录

来自分类Dev

如何使用AND条件更新SQLite数据库中的数据?

来自分类Dev

我如何从数据库中删除recyclerView中的项目

来自分类Dev

如何批量插入SQLITE数据库?

来自分类Dev

在SQLite数据库中插入ArrayList

来自分类Dev

如何删除SQL数据库中的项目?

来自分类Dev

如何正确设置sqlite数据库中的删除方法?

来自分类Dev

Java JTABLE-从数据库中删除项目后刷新TextFields

来自分类Dev

如何在SQLite数据库中更新值?

Related 相关文章

  1. 1

    在数据库中删除或插入后如何触发 Jtable 更新?

  2. 2

    使用vb.net从Sql数据库中插入,更新和删除数据?

  3. 3

    如何从 ListView 和 SQLite 数据库中删除项目?

  4. 4

    直接在DataGrid中插入,更新和删除行,并将更改保存在数据库中

  5. 5

    如何删除JTable中的项目也会从数据库中删除?

  6. 6

    从数据库中删除项目后刷新jtable

  7. 7

    如何从数据库中删除项目

  8. 8

    如何从数据库中删除项目?

  9. 9

    使用 PHP 更新和插入 SQL 数据库

  10. 10

    SQLite数据库中的项目未在RecyclerView中删除

  11. 11

    SQLite数据库中的项目未在RecyclerView中删除

  12. 12

    在Phonegap for SQLite中插入,更新和删除问题

  13. 13

    如何更新和删除表中的数据?

  14. 14

    没有从SQlite数据库中删除项目

  15. 15

    没有从SQlite数据库中删除项目

  16. 16

    在Android中删除或更新SQLite数据库中的条目

  17. 17

    将数据从jtable插入sqlite数据库

  18. 18

    如何使用Xamarin表单中的SQLite更新数据库中的项目

  19. 19

    异步删除和更新数据库中的项目

  20. 20

    如何从Xamarin中的SQLite数据库删除数据

  21. 21

    如何在表中插入更新和删除记录

  22. 22

    如何使用AND条件更新SQLite数据库中的数据?

  23. 23

    我如何从数据库中删除recyclerView中的项目

  24. 24

    如何批量插入SQLITE数据库?

  25. 25

    在SQLite数据库中插入ArrayList

  26. 26

    如何删除SQL数据库中的项目?

  27. 27

    如何正确设置sqlite数据库中的删除方法?

  28. 28

    Java JTABLE-从数据库中删除项目后刷新TextFields

  29. 29

    如何在SQLite数据库中更新值?

热门标签

归档