如何在jtable中编辑单元格然后将其保存到DB whit查询JAVA?

时间:2018-03-20 18:41:41

标签: java sql jtable cell editing

我想编辑JTable中的特定单元格,然后将其保存在数据库中。我正在使用SQL。我尝试了很多代码而且没有找到任何代码。

这是我的表,

table

我已经填充了数据库中的数据。如何编辑任何单元格并按Enter键将其保存在数据库中?或者使用JButton

我设法选择一行,使用JTextField进行编辑并保存,但最好只在单元格中进行编辑。

编辑:

我粘贴我的代码以帮助您理解我的问题。

这就是我创建表格的方式:

create

这就是我填充表格的方式。

populate

所以,我想编辑JTable中的单元格并保存数据库中的更改。

1 个答案:

答案 0 :(得分:0)

由于我没有得到一个好的答案,我最后来到了我自己!我做的!! 将解决方案发布到我的问题。 首先,我做到了这一点。

public void TableCuentas(){
     String[] columnas = {"ID","FECHA", "TIPO MATERIAL", "KILOGRAMOS" , "$ POR KILO", "DEBEMOS", "SALDO"};
        modelo = new DefaultTableModel();
        desplazamiento = new JScrollPane();

          desplazamiento.setBounds(20, 173, 673, 277);
          frameCC.getContentPane().add(desplazamiento);
          modelo.setColumnIdentifiers(columnas);
          desplazamiento.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            desplazamiento.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);            
            frameCC.getContentPane().add(desplazamiento, BorderLayout.NORTH);
            tabla = new JTable();
            desplazamiento.setViewportView(tabla);
            tabla.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            tabla.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            tabla.setFillsViewportHeight(true);                     
            tabla.setModel(modelo);
            tabla.setAutoCreateRowSorter(true);
            tabla.setColumnSelectionAllowed(true);
            tabla.setRowSelectionAllowed(true);

           modelo.addTableModelListener(new TableModelListener(){
            public void tableChanged(TableModelEvent e) {

                    actualizatabla(e);

              }
            });
            if (tabla.getCellEditor() != null) {
              tabla.getCellEditor().stopCellEditing();

            }

 }      

然后我做了这个

protected void actualizatabla(TableModelEvent e)  {

    if (e.getType() == TableModelEvent.UPDATE) {


        modelo = (DefaultTableModel) ((TableModel) (e.getSource()));
        int fila = e.getFirstRow();
        int columna = e.getColumn();

        String dato=String.valueOf(modelo.getValueAt(tabla.getSelectedRow(),tabla.getSelectedColumn()));
        texto.setText(dato);

        sdf = new SimpleDateFormat("dd-MM-yyyy");

        String strCodigo = modelo.getValueAt(fila, 0).toString();


        String sSQL = "";

      if (columna==1){
        sSQL =   "UPDATE materiales SET fechaIngreso=? WHERE ID=("+strCodigo+")" ;
      }
      if (columna==2){
          sSQL =   "UPDATE materiales SET tipoMat=? WHERE ID=("+strCodigo+")" ;
      }
      if (columna==3){
          sSQL =   "UPDATE materiales SET kg=? WHERE ID=("+strCodigo+")" ;
      }
      if (columna==4){
          sSQL =   "UPDATE materiales SET precio=? WHERE ID=("+strCodigo+")" ;
      }
      lblNewLabel_1.setText(String.valueOf(strCodigo));

  Connection conexion = null;


        try {
        conexion= (Connection) DriverManager.getConnection("jdbc:mysql://SERVER:3306/material?useSSL=false","admin" ,"admin");

              PreparedStatement pstm = (PreparedStatement) conexion.prepareStatement(sSQL);

                  pstm.execute();


        } catch (SQLException ex) {

            JOptionPane.showMessageDialog(null, "Error" + ex);
        }   



    }
}

现在我可以编辑一个表格单元格,当我按下输入单元格时,只需更改该值并将其直接保存到数据库中。我希望它可以帮助别人。