我有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();
}
我能想到的就是为每种可能的组合编写方法。我希望你能帮助我,谢谢。
答案 0 :(得分:0)
我不知道是否有代码只能从已检查字段进行更新。
您需要检查复选框的状态,而不是文本字段。类似的东西:
if (nombreCheckBox.isSelected())
prepStmt.setString(1, nombre);