He creado la siguiente tabla:
"CREATE TABLE ParsonCollection "
+ "(id integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),"
+ "name varchar(20),"
+ "eye varchar(20),"
+ "hair varchar(20),"
+ "height varchar(20),"
+ "weight varchar(20),"
+ "PRIMARY KEY (id))";
entonces yo estoy tratando de insertar en la tabla y aquí es donde estoy funcionando en problemas. Cuando intento de alterar la columna "ID", me sale un error que dice "java.sql.SQLSyntaxErrorException:. Intento de modificar una columna de identidad 'ID'" Esto es lo que las miradas instrucción de inserción como:
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ",1" + ")";
Sin embargo, cuando yo quite el campo que está insertando en "Identificación", me sale el siguiente error: "java.sql.SQLSyntaxErrorException: El número de valores asignados no es el mismo que el número de columnas especificadas o implícitas." Esto es lo que este inserto miradas declaración como:
"insert into ParsonCollection values(" + q_surround(Name) + ","
+ q_surround(Eye) + "," + q_surround(Hair) + "," + q_surround(Height) + "," + q_surround(Weight) + ")";
¿Cómo puedo superar esto? Parece que cuando solucione una excepción, el otro aparece y viceversa. Gracias.
No se puede asignar a una columna de identidad. Dado que no se puede pasar todos los valores de inserción, es necesario enumerar las columnas (omitiendo la columna de identidad):
"insert into ParsonCollection (
name,
eye,
hair,
height
weight
) values("
+ q_surround(Name)
+ "," + q_surround(Eye)
+ "," + q_surround(Hair)
+ "," + q_surround(Height)
+ "," + q_surround(Weight)
+ ")";
Nota al margen: su código es abierto a la inyección de SQL. Usted debería considerar seriamente el uso de declaraciones y de vinculación parámetros preparadas en lugar de la concatenación de la cadena de consulta.