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
5 respuestas
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();
}
El problema puede ser el espaciado.
En lugar de
+ "WHERE EmployeeID = " + jTextField1.getText();
Deberías escribir
+ " WHERE EmployeeID = " + jTextField1.getText();
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 ());
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.
Quizás otro campo sea Integer
, ¿puede verificar PhoneNumber
que está diseñado por Integer
?
Nuevas preguntas
java
Java es un lenguaje de programación de alto nivel. Utilice esta etiqueta cuando tenga problemas para usar o comprender el idioma en sí. Esta etiqueta rara vez se usa sola y se usa con mayor frecuencia junto con [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] y [maven].