准备好的语句仅更新Jtextfields中的某些字段

时间:2017-05-21 00:04:09

标签: java mysql

我正在做一个库存软件,我有一个修改框架,你引入一个id,然后你可以选择你要更新的字段,字段是JtextField,你可以通过checkBoxes选择它们。 该软件有西班牙语单词,所以如果你不明白这意味着随意问。

This is the frame

我有preparedStatement代码,但它会更新所有字段。我不知道是否有代码只能从选中的字段进行更新。

 public static void modificar(int id,String nombre,String marca,String descripcion,String tamaño,String departamento,float precio) throws SQLException
        {
            Connection conn = null;
    PreparedStatement prepStmt = null;
    ResultSet rs = null;
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        String connectionUrl = "jdbc:mysql://localhost:3306/inventario";
        String connectionUser = "root";
        String connectionPassword = "root";
        conn = (Connection) DriverManager.getConnection(connectionUrl, connectionUser, connectionPassword);
        String sqlStmt = "UPDATE Producto SET nombre=?, marca=?,descripcion=?,tamaño=?,departamento=?,precio=? WHERE idProducto='"+id+"'";
        prepStmt = conn.prepareStatement(sqlStmt);

                  if(!nombre.isEmpty()){
        prepStmt.setString(1, nombre);
                  }
                  if(!marca.isEmpty()){
        prepStmt.setString(2, marca);
                  }
                  if(!descripcion.isEmpty()){
                    prepStmt.setString(3, descripcion);
                  }
                  if(!nombre.isEmpty()){
                  prepStmt.setString(4, tamaño);
                  }
                  if(!departamento.isEmpty()){
        prepStmt.setString(5, departamento);
                  }
                  if(precio!=0){
                    prepStmt.setFloat(6, precio);
                  }
        prepStmt.executeUpdate();

    } catch (Exception e) {
        e.printStackTrace();
    } 

我能想到的就是为每种可能的组合编写方法。我希望你能帮助我,谢谢。

1 个答案:

答案 0 :(得分:0)

  

我不知道是否有代码只能从已检查字段进行更新。

您需要检查复选框的状态,而不是文本字段。类似的东西:

if (nombreCheckBox.isSelected())
    prepStmt.setString(1, nombre);