Comunidad de diseño web y desarrollo en internet online

Error al hacer un INSERT INTO en una db

Citar            
MensajeEscrito el 04 Ene 2014 03:26 am
Hola me estoy volviendo loco con un error en una db de SQLITE en AIR

Hago un INSERT INTO con unos parámetros, todos TEXT excepto un NUMERIC (el año en curso).

Si hago la consulta SQL desde un cliente de SQLite, se ejecuta sin problemas.

Si la hago desde FLASH/AIR siempre el mismo error:

Código :

Error #3132: Data type mismatch.
Detalles: could not convert text value to numeric value.


He probado incluso a ejecutar LITERALMENTE la consulta, sin variables ni nada, y da el mismo fallo haga lo que haga. La BBDD está creada así

Código :

CREATE TABLE [buques] (
[idBuque] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,
[anyo] NUMERIC  NULL,
[callSequence] TEXT  NULL,
[servicio] TEXT  NULL,
[consignatario] TEXT  NULL,
[nombreBuque] TEXT  NULL,
[codigoBuque] TEXT  NULL,
etc



Y finalmente esta es la consulta SQL

Código :

INSERT INTO Buques (anyo,callSequence,servicio,consignatario,nombreBuque,codigoBuque) VALUES ('2014','0001','ABC','CONSIGNA PEPE','BARCO VELERO MANU','MANU')



¿Qué puede ir mal?

Por daniel69

78 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Ene 2014 09:56 am
Hola,
en primer lugar los nombres de las tablas son case sensitive, así que primero prueba a poner "buques" en minúscula en la consulta.
Después prueba a quitar las comillas simples en el valor del año 2014, aunque debería funcionar también con ellas ...

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Ene 2014 03:58 pm
No funciona, da el mismo error.

así es como recojo los datos del formulario antes de hacer el INSERT INTO, no se si tendrá algo que ver

Código :

   //Recogemos los datos de los campos
   var   sql_anyo       = TxtAnyo.text;
   var   sql_callSequence   = TxtCallSequence.text;            
   var   sql_servicio      = TxtServicio.text;
   var   sql_consignatario   = TxtConsignatario.text;
   var   sql_nombreBuque= TxtNombreBuque.text;                     
   var   sql_codigoBuque   = TxtCodigoBuque.text;


Por tanto todo son STRINGS, probé a hacer

Código :

var   sql_anyo       = Number(TxtAnyo.text);


Pero tampoco funcionó :cry:

Por daniel69

78 de clabLevel



 

chrome
Citar            
MensajeEscrito el 04 Ene 2014 04:51 pm
Pues no sé, acabo de probar con esto y sí que me ha funcionado:

Código ActionScript :

var conn:SQLConnection = new SQLConnection();

var db:File = File.desktopDirectory.resolvePath("db2.sqlite");
conn.open(db);

var selectStmtBB:SQLStatement = new SQLStatement();
selectStmtBB.sqlConnection = conn;

selectStmtBB.text = "INSERT INTO buques (anyo,callSequence,servicio,consignatario,nombreBuque,codigoBuque) VALUES ('2014','0001','ABC','CONSIGNA PEPE','BARCO VELERO MANU','MANU')";
selectStmtBB.execute();

¿Te da el mismo error usando los textos directamente en lugar de los valores de los TextField?
Otra opción es que el fallo esté en otra columna de la tabla ...

Nota: Es mejor que definas las variables con su tipo, por ejemplo:

Código ActionScript :

var sql_anyo:String = TxtAnyo.text;

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Ene 2014 04:59 pm
Buscando un poco en Google he visto que ese mismo error le ha ocurrido a más gente, y algunos dicen que les ha ocurrido al cambiar el tipo de dato de una columna. Parece ser que sqlite en air no refresca bien los cambios en los tipos de datos, y para solucionarlo han tenido que volver a recrear la tabla entera.

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 04 Ene 2014 11:40 pm
Pues he tenido que borrar la tabla entera porque no había manera. Y volverla a crearla igual, aparentemente no hay diferencias. Ahora funciona.

Yo también había googleado antes de entrar aquí pero tenía la esperanza de encontrar un error. Así uno no puede confiar en crear una pequeña bbdd en local y confiar en que funcione.

En cualquier caso gracias Isidoro!

Por daniel69

78 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.