Quiero poder actualizar mi tabla usando los códigos que probé pero siempre muestra el error así

Probé la declaración preparada pero no sé si lo hice correctamente.

Entonces el código se ve así,

try{
    String sql = "update master.Employees set EmployeeName = '" + jTextField1.getText() + "'" + ",Address = '" + jTextField3.getText() + "'" + ",PhoneNumber = '" +
            jTextField4.getText() + "'" + ",EmailAddress = '" + jTextField5.getText() + "'" + "WHERE EmployeeID = " + jTextField1.getText();
    Statement update = myconObj.createStatement();
    update.executeUpdate(sql);
}
catch (SQLException e){
    e.printStackTrace();
}

Traté de ingresar el Id. de empleado, que es la clave principal de mi base de datos para poder actualizar, pero siempre muestra el error:

java.sql.SQLSyntaxErrorException: las columnas del tipo 'INTEGER' no pueden contener valores del tipo 'CHAR'.

Creo que arruiné la estructura de agarre porque muestra esta

¬í sr %org.netbeans.lib.ddl.impl.CreateTable¢”j ™   xr +org.netbeans.lib.ddl.impl.ColumnListCommand2›Œî]2)³ L columnst Ljava/util/Vector;xr )org.netbeans.lib.ddl.impl.AbstractCommandø8¦Œ·q•ª Z executionWithExceptionZ    newObjectL addpropst Ljava/util/Map;L formatt Ljava/lang/String;L nameq ~ L ownerq ~ L quoteStrq ~ L spect ,Lorg/netbeans/lib/ddl/DatabaseSpecification;xp pt :create table [{object.owner}.]{object.name}
(
    {columns}
)t  EMPLOYEESpppsr java.util.VectorÙ—}[€;¯ I capacityIncrementI elementCount[ elementDatat [Ljava/lang/Object;xp       ur [Ljava.lang.Object;ÎXŸs)l  xp   
sr %org.netbeans.lib.ddl.impl.TableColumn;¦±5‘b  I decsizeZ nullableI sizeI typeL checkeq ~ L constraintColumnsq ~ L defvalq ~ xr -org.netbeans.lib.ddl.impl.AbstractTableColumn¸Ô§y[k  Z   newColumnZ  newObjectL addpropsq ~ L cnameq ~ L formatq ~ L nameq ~ L otypeq ~ L refcolq ~ L reftabq ~ xppt 
EMPLOYEEIDt ³{column.name} {column.type}[({column.size}[,{column.decsize}])][ {column.type.suffix}][ default {default.value}][ {column.notnull}not null][ check ({check.condition})] primary keyt 
EMPLOYEEID_PKt PRIMARY_KEYpp        
   pppsq ~ pt EMPLOYEENAMEt §{column.name} {column.type}[({column.size}[,{column.decsize}])][ {column.type.suffix}][ default {default.value}][ {column.notnull}not null][ check ({check.condition})]q ~ t COLUMNpp       2   pppsq ~ pt ADDRESSq ~ q ~ q ~ pp       2   pppsq ~ pt PHONENUMBERq ~ q ~ q ~ pp       
   pppsq ~ pt EMAILADDRESSq ~ q ~ q ~ pp       2   pppsq ~ pt IMAGEq ~ q ~ !q ~ pp       2   pppppppx
1
Shaggy Lid 9 may. 2019 a las 16:48

5 respuestas

La mejor respuesta

Intente utilizar PreparedStatement como a continuación:

 try
      {
          String sql = "UPDATE `master.Employees` SET `EmployeeName`=?, `Address `=?, `PhoneNumber`=?, `EmailAddress`=? WHERE `EmployeeID `=?";
         PreparedStatement ps = con.prepareStatement(sql);
         //putting value for all placeholder (?)
         ps.setString(1,jTextField2.getText());
         ps.setString(2,jTextField3.getText());
         ps.setInt(3,Integer.parseInt(jTextField4.getText()));
         ps.setString(4,jTextField5.getText());
         ps.setInt(5,Integer.parseInt(jTextField1.getText()));

         int i=0;
         i = ps.executeUpdate();
         if(i>0)
             {
         //do   something   
             }
     }
     catch(Exception e)
      {

      e.printStackTrace();

      }
1
Swati 9 may. 2019 a las 14:41

El problema puede ser el espaciado.

En lugar de

+ "WHERE EmployeeID = " + jTextField1.getText();

Deberías escribir

+ " WHERE EmployeeID = " + jTextField1.getText();

0
minus 9 may. 2019 a las 14:38

Necesita convertir el valor de jTextField1.getText (), para pasar un integer. Puede hacerlo de la siguiente manera antes de realizar la actualización.

int id = Integer.parseInt (jTextField1.getText ());
0
Angabo 9 may. 2019 a las 14:04

La función llamada jTextField1.getText() básicamente devuelve un objeto String y la base de datos espera un número entero. Prueba Integer.parseInt(jTextField1.getText()) en su lugar.

0
Angabo 9 may. 2019 a las 14:37

Quizás otro campo sea Integer, ¿puede verificar PhoneNumber que está diseñado por Integer?

0
jeffrey 9 may. 2019 a las 14:13