Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-08-2012
nickolas nickolas is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 32
Poder: 0
nickolas Va por buen camino
Problemas insertando en mysql delphi 2010

hola a todos, tengo un problema con las inserciones que tengo que hacer en una base de datos mysql. trato de insertar registros y siempre me tira el erro que esta mal la sintaxis y no se porque por que hasta hace unos dias funcionaba y de pronto dejo de funcionar y la verdad no se porque dejo el codigo abajo por lo que se la sintaxis de mysql no tiene nada malo.

Aclaracion: uso mysql 5 y delphi 2010 con los componentes zeos.

Cita:
begin
QRY_Acciones.Close;// cierro la conexion
QRY_Acciones.SQL.Clear; //limpio por si tenia alguna consulta anterior

//inserto los datos en la base de datos
QRY_Acciones.SQL.Add('INSERT into pasajero VALUES (null, :apellido, :nombre, :dni)');
//paso los parametros
QRY_Acciones.ParamByName('apellido').AsString := ED_Apellido.Text;
QRY_Acciones.ParamByName('nombre').AsString := ED_Nombre.Text;
QRY_Acciones.ParamByName('dni').AsInteger := StrToInt(ED_Dni.Text);

//ejecuto la sentencia SQL
QRY_Acciones.ExecSQL;
end;
El query que hace las acciones es "QRY_Acciones".
agradeceria cualquier solucion que me puedan dar porque la vardad no se que pasa esto ya que antes funcionaba bien y me dejo de funcionar.gracias espero sus respuestas.

Última edición por nickolas fecha: 19-08-2012 a las 23:36:06.
Responder Con Cita
  #2  
Antiguo 19-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola Nickolas: Creo que el tu sentencia te faltan los campos. Solo le estas dando los valores y a donde van?.-

Saluods
Responder Con Cita
  #3  
Antiguo 19-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Supuestamente va asi:

Código SQL [-]
insert into Pasajero
  (ID,Apellido,Nombre,DNI)
values
  (:Apellido,:Nombre,NI)

Saludos
Responder Con Cita
  #4  
Antiguo 19-08-2012
nickolas nickolas is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 32
Poder: 0
nickolas Va por buen camino
si gracias ya lo modifique pero me sigue tirando el mismo error

quedo asi

Cita:
begin
QRY_Acciones.Close;// cierro la conexion
QRY_Acciones.SQL.Clear; //limpio por si tenia alguna consulta anterior
//inserto los datos en la base de datos
QRY_Acciones.SQL.Add('INSERT into pasajero (id_pasajero, apellido, nombre, dni) VALUES (null, :apellido, :nombre, :dni)');
QRY_Acciones.ParamByName('apellido').AsString := ED_Apellido.Text;
QRY_Acciones.ParamByName('nombre').AsString := ED_Nombre.Text;
QRY_Acciones.ParamByName('dni').AsInteger := StrToInt(ED_Dni.Text);
//ejecuto la sentencia SQL
QRY_Acciones.ExecSQL;
//refresco el dbgrid

end;
No se le debe de poner el primer valor de como null cuando se manda el dato ya que el id es un campo autincrementable? gracias por reponder
Responder Con Cita
  #5  
Antiguo 20-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Cita:
Empezado por nickolas Ver Mensaje
No se le debe de poner el primer valor de como null cuando se manda el dato ya que el id es un campo autincrementable? gracias por reponder
No conozco mysql aunque supongo que es similar a Firebird. Si vez el ejemplo que puse podras observar que para el valor de id no le di ningun valor (es decir, no lo invoque ni mucho menos escribi null). Se supone que el autoincremental en tu base de datos se hace a partir de un trigger o algo parecido ¿No?. En definitiva cuando los demas valores viajan a la base de datos falta el asignado al id por lo que no escribe null si no que esta vacio y ahi interviene el trigger generando el que corresponda...

Saludos.-

No se la version de mysql pero creo que el soporte de trigger se implementa despues de la 5.0.-
Responder Con Cita
  #6  
Antiguo 20-08-2012
nickolas nickolas is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 32
Poder: 0
nickolas Va por buen camino
igual me sigue tirando erro y no se por que, la verdad me sorpende por que antes andaba bien.
Responder Con Cita
  #7  
Antiguo 20-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Ok, Seria mas facil si indicas el error y subi el triggers asi tal ves demos una alternativa.-
Responder Con Cita
  #8  
Antiguo 20-08-2012
nickolas nickolas is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 32
Poder: 0
nickolas Va por buen camino
la verdad no se cual es le trigger por lo que se en mysql siempre que se agrega un registro se autoincrementa en numero de id si es autoincrementable, el error que me da es el siguiente

"SQL: Error you have an error in your SQL sintax"
Responder Con Cita
  #9  
Antiguo 20-08-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Ok, y de donde armaste la base de datos?... Proba pasandole el valor nulo por parametro o bien pasale un cero aunque todo depende del trigger, por ejemplo

Este es un trigger que se activa si el valor de Id es nulo o cero y por parametro lo pasarias asi: (Obvio que segun mi ejemplo)

Código SQL [-]
  IF ((NEW.ID_PASAJERO IS NULL) or (NEW.ID_PASAJERO =0)) THEN
      NEW.ID_PASAJERO = GEN_ID(PASAJERO_ID_GEN, 1);


Código Delphi [-]
begin
QRY_Acciones.Close;// cierro la conexion
QRY_Acciones.SQL.Clear; //limpio por si tenia alguna consulta anterior
//inserto los datos en la base de datos
QRY_Acciones.SQL.Add('INSERT into pasajero (id_pasajero, apellido, nombre, dni) VALUES (:Indice, :apellido, :nombre, :dni)');
QRY_Acciones.ParamByName('Indice').AsString := ''; // ó QRY_Acciones.ParamByName('Indice').AsInteger := 0;
QRY_Acciones.ParamByName('apellido').AsString := ED_Apellido.Text;
QRY_Acciones.ParamByName('nombre').AsString := ED_Nombre.Text;
QRY_Acciones.ParamByName('dni').AsInteger := StrToInt(ED_Dni.Text);
//ejecuto la sentencia SQL
QRY_Acciones.ExecSQL;
//refresco el dbgrid
end;

Fijate que cambie null por :indice y proba con open en vez de execSql ya que es un Query...
Hasta aca llego mi amor

Saludos
Responder Con Cita
  #10  
Antiguo 20-08-2012
nickolas nickolas is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 32
Poder: 0
nickolas Va por buen camino
lo cambie pero todavia nada que funcione bien, igual gracias por intentarlo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No puedo conectar Mysql con delphi 2010 juanmarchettini Conexión con bases de datos 8 17-04-2011 20:47:34
MySQL y DBNavigator Delphi 2010 johnytsekieng Conexión con bases de datos 4 16-02-2011 14:45:48
Mysql con delphi 2010 consulta tabla gdlrinfo SQL 6 29-09-2010 01:15:39
Data snap con mysql y Delphi 2010 victor Julio Conexión con bases de datos 1 02-08-2010 21:21:04
Firebird, Mysql y Delphi 2010 tec Varios 3 16-04-2010 15:34:51


La franja horaria es GMT +2. Ahora son las 11:27:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi