Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Conectar Delphi 6 a MySQL 5 (https://www.clubdelphi.com/foros/showthread.php?t=88678)

DenisDiaz 14-07-2015 23:02:58

Conectar Delphi 6 a MySQL 5
 
Buenas tardes,

Quisiera saber si alguno de ustedes ha tenido la experiencia de conectar una aplicación en Delphi 6 a MySQL en su versión 5 usando ODBC y si es el caso cual sería la versión de driver ODBC que lo permite y no genera problemas.

Muchas gracias.

lgarcia 16-07-2015 16:35:11

Conectar Delphi 6 a MySQL 5
 
Yo probe con mysql-connector-odbc-5.2.6-win32.msi en Deplhi XE2 y trabajo bien, esa debe servirte tambien.

Saludos
Luis Garcia

DenisDiaz 16-07-2015 17:43:44

Gracias
 
Muchas gracias, probaré y le cuento. Saludos

DenisDiaz 24-08-2015 16:58:58

Problema
 
Buenos dias.
Aun tengo el problema que les mencionaba, necesito conectar una app hecha en Delphi 6 a MySQL version 5. La conexión que uso es por ODBC. Lo raro que me ocurre es que tengo dos aplicaciones en delphi 6 que se conectan igual, una se conecta bien y la otra no se conecta bien, la que no se conecta cuando hago un select me devuelve solo algunas columnas y no todas, no entiendo que pueda pasar pues las dos aplicaciones son muy similares y se conectan de la misma forma, alguien ha lidiado con este problema?
Muchas gracias por sus respuestas.

Casimiro Notevi 24-08-2015 17:27:11

Cita:

Empezado por DenisDiaz (Mensaje 495800)
una se conecta bien y la otra no se conecta bien, la que no se conecta cuando hago un select me devuelve solo algunas columnas y no todas

Salvo que la base de datos esté estropeada, lo que dices no puede ser. Un select devuelve los registros que tenga que devolver, siempre los mismos, ni más ni menos.

DenisDiaz 24-08-2015 18:06:00

Respuesta
 
Hola.
Entiendo que no le vea sentido, pero así ocurre, debe ser debido a que la base de datos es mysql version 5 y el delphi es version 6. La base de datos está bien, si ejecuto consultas con un cliente me devuelve bien la informacion, pero desde delphi no me devuelve algunas consultas, lo único que se me ocurre que sea debido a las versiones pero lo más raro es que desde otra aplicacion de delphi 6 con la misma conexion por ODBC si funciona bien.

Casimiro Notevi 24-08-2015 18:12:33

Cita:

Empezado por DenisDiaz (Mensaje 495804)
Entiendo que no le vea sentido, pero así ocurre,

No, si el problema no es que no le vea sentido, el problema es que no nos has dado ninguna información para poder ayudarte. Ya sabes, no somos adivinos ni podemos ver tu ordenador desde aquí :)

AgustinOrtu 24-08-2015 19:17:40

No se puede usar Zeos en delphi 6?

DenisDiaz 24-08-2015 20:01:09

respuesta
 
Hola, les explico un poco mejor el problema.
Tengo dos aplicaciones hechas en delphi 6 y que llevan años trabajando con mysql version 4. Ahora se me hace necesario actualizar la version de mysql de la 4 a la 5, por lo que migré la base de datos a la version mysql 5. Uno de los programas funciona bien, pero el otro me daba errores y encontré que se debe a que no ejecuta bien las consultas, por ejemplo, en la base de datos tengo:
tabla sedes
campos
- id integer
- nombre varchar (30)
- direccion varchar (40)
- telefono varchar (20)
Cuando desde el programa ejecuto la consulta "select * from sedes" me devuelve solo las columnas id y direccion, omite columnas que existen.
Sé que no es un problema de la base de datos porque puedo acceder a ella por medio de SQLYog y al ejecutar la misma consulta obtengo todas las columnas, por lo que el problema parece estar relacionado con la comunicacion delphi-odbc-mysql.
Ambos programas se conectan a la base de datos por medio de ODBC por medio del componente TDatabase.

usar ZEOS es posible, pero implicaria bastantes modificaciones al programa.

Casimiro Notevi 24-08-2015 20:10:10

Prueba simplemente poniendo un componente nuevo en el formulario, la setencia sql y lo enlazas con un datasource a un dbgrid cualquiera. Tiene que funcionar.

Cita:

Empezado por DenisDiaz (Mensaje 495812)
... me daba errores ...

Seguimos igual, sin ser adivinos :) ¿qué errores?

DenisDiaz 24-08-2015 20:14:15

Respuesta
 
Lo que hice fue eso, tengo un formulario donde escribo la consulta SQL y muestro el resultado en un Grid y veo que muestra solo algunas columnas. Los errores que mencionaba era debido a esto mismo, al solo cargarse algunas columnas el programa daba error al no encontrar el resto de las columnas, es decir, el error es uno solo y es que no muestra todas las columnas.

ecfisa 24-08-2015 21:49:45

Hola DenisDiaz.
Cita:

Empezado por DenisDiaz (Mensaje 495814)
Lo que hice fue eso, tengo un formulario donde escribo la consulta SQL y muestro el resultado en un Grid y veo que muestra solo algunas columnas. Los errores que mencionaba era debido a esto mismo, al solo cargarse algunas columnas el programa daba error al no encontrar el resto de las columnas, es decir, el error es uno solo y es que no muestra todas las columnas.

Si no muestra todas las columnas de la tabla es por que no has incluido las ausentes en la instrucción SELECT.

Es decir, supongamos que tu consulta es así:
Código SQL [-]
SELECT CAMPO1, CAMPO3, CAMPO4 FROM TABLA
Es lógico que no puedas acceder a CAMPO2 ya que no fué incluido en SELECT.

Podes hacer dos cosas:

Incluir la/las columnas que deseas que aparezcan,
Código SQL [-]
SELECT CAMPO1, CAMPO2, CAMPO3, CAMPO4 FROM TABLA
O incluir todas,
Código SQL [-]
SELECT * FROM TABLA

Saludos :)

DenisDiaz 25-08-2015 20:38:03

Pruebas
 
Hola de nuevo, ya encontré la causa del problema. Las columnas que están creadas con:
Código SQL [-]
character set latin1 collate latin1_spanish_ci
Son las que no se me muestran al seleccionarlas, por ejemplo:
Código SQL [-]
`nombre` varchar(255) character set latin1 collate latin1_spanish_ci default '',
`color` varchar(50) default '',
En esos dos campos se muestra solo el llamado "color", el llamado "nombre" no se muestra en el select.
Para confirmar eliminé la tabla y la creé sin la especificacion (character set latin1 collate latin1_spanish_ci) y me funcionó bien, por tanto asumo que es un problema de compatibilidad en ese aspecto.
Al parecer hay otros problemas que estoy detectando, no parece buena idea seguir buscando conectar esa aplicacion en delphi 6 a mysql 5.
Que opinan? Muchas gracias.

Datos adicionales:
Cita:

Aplicacion en Delphi 6 y 7

MySQL version 5.5

ODBC: mysql-connector-odbc-5.1.13-win32.msi
Consulta que ejecuto:
Código SQL [-]
select * from fcia_sedes
Error que me da:
Cita:

Query1: Field 'nombre' not found
Si muestro los resultados en un Grid me muestra solo algunas columnas, no muestra la columna llamada "nombre"

Tabla que uso de pruebas:
Código SQL [-]
CREATE TABLE `fcia_sedes` (
  `id` int(11) NOT NULL auto_increment,
  `nombre` varchar(20) character set latin1 collate latin1_spanish_ci NOT NULL default '',
  `descrip` varchar(255) character set latin1 collate latin1_spanish_ci default '',
  `color` varchar(40) default '',  
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Casimiro Notevi 25-08-2015 20:44:21

Cita:

Empezado por DenisDiaz (Mensaje 495847)
no parece buena idea seguir buscando conectar esa aplicacion en delphi 6 a mysql 5.

Delphi 6 funciona perfectamente con mysql 5.
El problema que tienes es con los componentes, con la configuración, con ... ni idea, porque no tenemos tu base de datos, tu código fuente, etc. :confused:

elaguna 25-08-2015 21:17:29

Lo que aquí parece haber es un problema de configuración con el servidor y/o el modo en que tratas los datos en tus aplicaciones.

Utilizas:
Código SQL [-]
set latin1 collate latin1_spanish_ci

supongo que es por la cuestión de los acentos y las ñ's, en ese caso lo que te sugiero es que configures tu nuevo servidor para usar UTF-8, con esto creas tus bases y tablas sin tener que definir la codificación para cada campo.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:30:52.

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