Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Fallo al insertar datos desde C# a mysql

Estas en el tema de Fallo al insertar datos desde C# a mysql en el foro de Mysql en Foros del Web. Hola. Tengo un problema con mi proyecto de fin de curso. El proyecto consiste en gestionar una base de datos de alquileres de coches desde ...
  #1 (permalink)  
Antiguo 29/05/2013, 09:08
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 10 años, 11 meses
Puntos: 0
Fallo al insertar datos desde C# a mysql

Hola. Tengo un problema con mi proyecto de fin de curso.

El proyecto consiste en gestionar una base de datos de alquileres de coches desde c#. Uso Microsoft Visual C# 2010 Express y MySQL. Lo estoy haciendo a través de una aplicación de consola

Tengo la siguientes tablas en MySQL:

- Coches (Matricula (Clave Primaria, varchar(12)) , antiguedad(date)), con el registro AA7777AA, 2005-01-01

- Clientes (DNI (Clave Primaria, varchar(9)), nombre(varchar(60))), con el registro 11111111A, Cliente Apellido1 Apellido2

- tabla (Matricula (Clave primaria, varchar(12)), DNI (Clave Primaria, varchar(9)))

El campo Matricula de la tabla "tabla" es una clave foranea del campo Matricula de la tabla "Coches", y el DNI de la tabla "tabla" es foranea del campo DNI de "Clientes".


El código de la aplicación es:
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.

La conexión se hace bien, y sin configurar claves foraneas el registro se inserta bien. El problema me lo da el programa al ir a insertar en la tabla datos correspondientes a una clave foranea. Me da el error 0x80004005 ¿Aguien sabe en que me equivoco? Muchas gracias por la molestia.

Última edición por gnzsoloyo; 29/05/2013 a las 10:31
  #2 (permalink)  
Antiguo 29/05/2013, 10:22
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Fallo al insertar datos desde C# a mysql

Hola tharaz:

Algunas observaciones...

En primer lugar: NO INCLUYAS CÓDIGO DE NINGÚN LENGUAJE DE PROGRAMACIÓN EN ESTE FORO, está prohibido en este foro. Sólo debes incluir código SQL, de lo contrario te expones a que los administradores del foro modifiquen tu mensaje o incluso que lo muevan de sitio hacia el foro correspondiente al lenguaje que estás utilizando.

Segundo, el error que mencionas en realidad es un error genérico, no tiene nada que ver con SQL... podría ser por muchas cuestiones, debes enfocarte sólo en el código SQL y de ahí partir para ver donde está el problema.

Tercero, tus campos matrícula y nombre son de tipo VARCHAR, por lo que es posible que el error esté en la manera en que estás haciendo las consultas. Cuando se trata de campos alfanuméricos, las comparaciones las tienes que hacer poniendo el valor entre comillas simples ('):

Código:
SELECT Matricula FROM coches WHERE Matricula = 'AA7777AA';

SELECT DNI FROM clientes WHERE Nombre = 'Cliente Apellido1 Apellido2';
Los paréntesis son completamente obsoletos, no te sirven de nada en este caso.

Además, en tu consulta estás asignando a tus variables MAT y DNI la consulta, MAS NO EL RESULTADO DE LA CONSULTA... es decir, tu tienes algo como esto:

Código:
string mat = "SELECT Matricula FROM coches WHERE Matricula = 'AA7777AA';
en otras palabras, si le haces un Console.write a tu variable STM (hazlo, no te quedes con la duda), estoy seguro que obtendrías algo como esto:

Código:
INSERT INTO tabla 
VALUES(
   'SELECT Matricula FROM coches WHERE Matricula = 'AA7777AA',
  'SELECT DNI FROM clientes WHERE Nombre = 'Cliente Apellido1 Apellido2''
);
Lo que tienes que hacer es EJECUTAR las consultas que tienes en tus variables MAT y DNI, y una vez que las ejecutes, ASIGNAR LOS VALORES QUE TE REGRESE a variables que puedes utilizar en el INSERT...

El asunto de las comillas en el INSERT es lo mismo que en el SELECT, el INSERT debe quedar así:

Código:
INSERT INTO tabla VALUES ('AA7777AA', '11111111A');
Te recuerdo que hay un foro dedicado a .NET donde puedes exponer tu código y buscar ayuda con los expertos en el tema.

http://www.forosdelweb.com/f78/

Saludos
Leo.
  #3 (permalink)  
Antiguo 29/05/2013, 13:57
 
Fecha de Ingreso: mayo-2013
Mensajes: 2
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Fallo al insertar datos desde C# a mysql

Gracias por avisarme, intentare no volver a poner el código de otro lenguaje de programación que no sean consultas sql.

Al final he conseguido solucionar el problema. Simplemente he hecho la insercción a través de MySQL. He copiado el código de la consulta en el código y me ha funcionado a la perfección.

Es curioso como las cosas mas tontas son capaces de dar tantos problemas

Etiquetas: campo, fallo, insert, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:38.