将编辑过的单元格从 JTable 保存到数据库

Posted

技术标签:

【中文标题】将编辑过的单元格从 JTable 保存到数据库【英文标题】:Save edited cell/s from JTable to database 【发布时间】:2013-08-23 08:42:30 【问题描述】:

JTable 的新手。今天刚入。 所以我能够将我的数据从数据库填充到 JTable 中。 我目前正在将编辑的单元格保存到数据库中。

我读过很多文章。但是我没找到

只需一个按钮然后保存!

这是我的代码

public class DBEngine 
Connection con = IQConnection.getConnectionMgrInstance().getConnection();
PreparedStatement pstm = null;
ResultSet rs = null;

public Vector getEmployee() throws Exception
    Vector<Vector<String>> employeeVector = new Vector<Vector<String>>();

    try           

        if (con != null) 

           String query = "SELECT * FROM OGG.TBLSAMPLE";


            try 
                pstm = con.prepareStatement(query);
                rs = pstm.executeQuery();


                while(rs.next()) 
                   Vector<String> employee = new Vector<String>();
                    employee.add(rs.getString(1)); //Empid
                    employee.add(rs.getString(2)); //name
                    employee.add(rs.getString(3)); //position
                    employee.add(rs.getString(4)); //department
                    employeeVector.add(employee);
                   



             catch (Exception e) 
                e.printStackTrace();
            
        else
            //lbl_err1.setText("Error");
        

     catch (Exception e) 

        e.printStackTrace();
        //flag = false;
        //lbl_err1.setText("Failed!");
     finally 

        try
            if(rs != null)
                rs.close();
            
        catch(Exception e)

        

        try
            if(pstm != null)
                pstm.close();
            
        catch(Exception e)

            
    
   return employeeVector;


谢谢!

【问题讨论】:

保存到数据库的代码在哪里? 目前没有。仍在研究并希望找到一个这样做的例子。 @javaBeginner 我的代码有问题吗? 我没有找到任何插入代码,所以我刚刚发布了一种插入 mytable(表名)的方法,并且在我的表中有一个字段 ID。这是插入的方法。试试这使用你自己的字段名和表名。如果你发现任何问题,那么你可以问 @user2510841 我强烈建议您先完成关于 Swing 和 JDBC 的Java tutorials。在那里你会发现所有关于按钮和数据库更新的信息。阅读它,用你自己的代码尝试一下,如果你遇到了特定的问题,请回到这里。 【参考方案1】:

像这样使用preparedstatement插入数据库

PreparedStatement pt=con.prepareStatement("insert into mytable values(?) ");
pt.setString(1,ID);
int result=pt.executeUpdate();

如果要更新就用这种方式

 PreparedStatement pt=con.prepareStatement("update mytable set column_name=? ");
    pt.setString(1,ID);
    int result=pt.executeUpdate();

【讨论】:

如果您只想更新数据库表中的现有行而不是插入新行,请使用 SQL update 语句。 PreparedStatement ps = con.prepareStatement("UPDATE SAMPLE SET CLIENT = ?, PARTNER = ?,price = ? WHERE id = "+row); ps.setString(1, (String) jTblSample.getValueAt(row, 1)); ps.setInt(2, (Integer) jTblSample.getValueAt(row, 2)); ps.setInt(3, (Integer) jTblSample.getValueAt(row, 3)); ps.executeUpdate(); pt.setString(1,ID); @user2510841 *** 问题和答案供将来使用。假设将来另一个用户有与您的问题相同的查询,那么他/她可以直接复制我的答案。所以根据您的问题,我的答案非常适合它。现在您有另一个关于 UPDATE 的查询,所以发布另一个问题。不要问所有查询一个。 好的,谢谢。在我的问题中,它清楚地说明了保存编辑的单元格,而不是在表中插入值。谢谢!

以上是关于将编辑过的单元格从 JTable 保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章

仅将可见单元格从 Excel 保存到 CSV

在jTable(自动保存)中编辑后如何保存单元格中的数据?

将单元格从一个工作表保存到另一个工作簿中的工作表 - 无需提示即可保存

如何在编辑时选择JTable单元格中的所有文本

将样式单元格从数据库添加到 DataTable

如何将JComboBox添加到JTable单元格?