在JTable单元格更改上更新数据库

时间:2015-11-07 16:25:16

标签: java jtable

我有一个窗口根据表格中的数据显示我的数据,但问题是当我更改并单击保存按钮时出现错误:错误:没有为参数1指定值。

但我不想只更新所有列

enregistrer.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) 
                {
                    int row = table.getSelectedRow();
                    int col = table.getSelectedColumn();
                    String sql = null;
                      try {
                        if(col==4)
                            sql = "UPDATE impaye" + "SET Impayé = ?" + "WHERE ID = ? "+ row;


                            preStat =(PreparedStatement) connexion.prepareStatement(sql);
                            preStat.setObject(1, table.getValueAt(row, col));
                            preStat.executeUpdate();
                                preStat.close();

                      } catch (SQLException insertException) {
                           System.out.println("Error:"+insertException.getMessage());
                      }

                    }

                  });

1 个答案:

答案 0 :(得分:1)

  

但我不想只更新所有列

那么你需要改变你的SQL。目前,您的SQL将更新所有4列。

如果您只想更新单个列,则需要4个SQL语句。您使用的语句将基于已更改的列的索引。

类似的东西:

String sql = null;

if (col == 0)
    sql = "UPDATE impaye SET Date = ? " + row;
else if (col == 1)
    sql = "UPDATE impaye SET Débiteur = ? " + row);
else if
    ...

preStat =(PreparedStatement) connexion.prepareStatement(sql);
preStat.setObject(1, table.getValueAt(row, col));
preStat.executeUpdate();

我认为你的SQL中还需要一个“where”子句。我认为你不能只指定行号(但我对SQL不太了解。)