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)
-   -   conexion mediante ODBC a la base de datos mysql, por linea de codigo de delphi (https://www.clubdelphi.com/foros/showthread.php?t=16022)

sakuragi 12-11-2004 04:29:10

conexion mediante ODBC a la base de datos mysql, por linea de codigo de delphi
 
hola que tal.

quisiera saves como conectarme ala base de datos de mysql mediante ODBC pero mediante codigo en delphi sin la nesesidad de haserlo manual mente desde el origenes de datos de windows.

he hecho algo paresido mediante visual fox que se conecta a la base de datos mediante ODBC pero sin crear ningun DNS.

y asi poder insertar ( inser), borrar (delete) y modificar (update) me diante codigo sql la base de datos.

es asi el codigo:

lcServer="localhost"
lcDatabase="prueva"
lcUser = "root"
lcPassword = ""
lcStringConn="Driver={MySQL ODBC 3.51 Driver};Port=3306"+;
";Server="+lcServer+;
";Database="+lcDatabase+;
";Uid="+lcUser+;
";Pwd="+lcPassWord
a=SQLSTRINGCONNECT(lcStringConn)
?SQLEXEC(a,"insert into clientes(nombre,apellido) values (?thisform.nom.value,?thisform.ape.value)")


ahi la posibilidad de haser esto desde el delphi?

de hante mano gracias

roman 12-11-2004 17:42:30

Aunque no respondo a tu pregunta, ¿es absolutamente necesario que uses ODBC habiendo componentes gratuitas como Zeos que te dan acceso nativo y más eficiente a MySql que através de ODBC?

// Saludos

sakuragi 12-11-2004 19:40:06

hola que tal

es mejor usar zeos que ODBC?

le problema es que no se que es zeos


gracias

roman 12-11-2004 20:19:45

Cita:

Empezado por sakuragi
hola que tal

Hola


Cita:

Empezado por sakuragi
es mejor usar zeos que ODBC?

Yo pienso que sí. ODBC supone una capa extra de abstracción para poder manejar de forma genérica distintas bases de datos. Librerías como Zeos te proveen de una acceso casi nativo. El "casi" es porque ciertamente también tienen una capa de abstracción ya que manejan distintos servidores, pero en este caso la capa es sumamente delgada y prácticamente es meramente un distribuidor que pasa las peticiones directamente al API de la librería cliente (en este caso libmysql.dll). Además es muy fácil de configurar, ya sea por código o en el momento del diseño.


Cita:

Empezado por sakuragi
le problema es que no se que es zeos

Zeos es una biblioteca de componentes que puedes bajar de http://www.zeoslib.net. Busca en la sección de descargas el apartado Zeos Database Objects y bájate la versión 6.1.5 estable. En el archivo zip que bajes vienen las instrucciones de instalación que son muy sencillas.

Para usar Zeos simplemente tienes que colocar una componente TZeosConnection y asignar sus parámetros:

Código Delphi [-]
ZeosConnection1.Host := dirección ip del servidor;
ZeosConnection1.Database := base de datos;
ZeosConnection1.User := usuario;
ZeosConnection1.Password := contraseña;
ZeosConnection1.Protocol := 'mysql';

Usa su propiedad Connected para abrir la conexión.

A esta componente le puedes conectar distintas componentes para acceder a los datos como son TZReadOnlyQuery, TZQuery yTZTable.

Yo normalmente uso TZQuery- totalmente similar al conocido TQuery del BDE - pero bien puedes usar TZReadOnlyQuery si no requieres actualizar la consulta. TZTable no es más que un TZQuery con "select * from tabla" así que no lo recomiendo como no sea para tablas muy pequeñas.

Un TZQuery es, como dije antes, muy similar a un TQuery. Simplemente tienes que poner la consulta en su propiedad SQL y asignarle la conexión TZConnection en su propiedad Connection. Para correr la consulta usas su método Open o ExecSQL dependiendo de si es una consulta SELECT o bien una consulta que no regresa datos (INSERT, DELETE, etc.)

Estas componentes son descendientes de TDataSet de manera que las puedes conectar a cualquier componente db aware como DBEdit, DBGrid, DBLookupComboBox, etc.

Cita:

Empezado por sakuragi
gracias

De nada

// Saludos

sakuragi 12-11-2004 22:34:27

hola que tal


pues toy queriendo instalar el zeus ya segui todos los pasos pero la llegar al paso de:

Load the project and install the following components in the order listed:
  • ZCore.bpl
  • ZParseSql.bpl
  • ZPlain.bpl
  • ZDbc.bpl
  • ZComponent.bpl
abro el proyecto y me sale una ventana donde salen todas las opcines que anterior mente puse que con orde como va le doy en activar.

ya que dan activados. no pasa nada nosales las opciones.

entonses mediante el delphi abri el archivo zcore.dpk entonses sale otro cuadro y sale la opcion install de doy clic en esta opcion pero me sale error que falta dos archivos "rtl" y "vcl".

que son requeridos.


como la ves?

saludos

roman 12-11-2004 22:41:42

Cita:

Empezado por sakuragi
le doy en activar.

ya que dan activados

No es Activar sino Install (click derecho sobre cada componente)

// Saludos

sakuragi 13-11-2004 00:24:22

hola que tal


asi es si le hise

me marca que error

[Fatal Error] ZCore.dpk(29): Required package 'rtl' not found.

en la linea:

"requires
rtl,
vcl;"

roman 13-11-2004 00:51:58

Pues ¡vaya que es raro! ¿Qué le has hecho a tu sistema? :D

Asegúrate de que la ruta $(DELPHI)\Lib esté en

Tools|Enviroment Options|Library|Library Path

// Saludos

sakuragi 13-11-2004 03:30:57

ahhh es cierto

si estava mal la ruta esa gracias.

si esta aplicacion hecha con zeos la pongo el red en la maquina del cliente nonmas tengo que poner los dll del mysql o todo?


de hante mano gracias.

sakuragi 13-11-2004 04:41:14

hola que tal ya intale todo, y probe con una aplicacion de prieva y me marcar ee erroe con el "zconnection"

[Fatal Error] clientes.pas(7): File not found: 'ZDbcIntfs.dcu'


entonses lo que hise fue copiar todo lo de la carpeta "c:\zeos\packages\delphi7\build"
al direcctorio

"C:\Archivos de programa\Borland\Delphi7\Lib"
y ya funciono bien no se supone que al intalarlo se deven pasar estos archivos a ese directorio solo?

de hante manoa gracias

roman 13-11-2004 05:44:19

Cita:

Empezado por sakuragi
entonses lo que hise fue copiar todo lo de la carpeta "c:\zeos\packages\delphi7\build"
al direcctorio

"C:\Archivos de programa\Borland\Delphi7\Lib"

Esto fue como aquello de "Si la montaña no va a Mahoma, Mahoma va a la montaña" :D

En lugar de mandar todo a Lib debes agregar la ruta a c:\zeos\packages\delphi7\build en Tools|Enviroment Options|Library|Library Path

Y ya que estés en eso, en el Browsing Path agrega las rutas a todos los subdirectorios de c:\zeos\src. Esto no es estrictamente necesario pero te servirá cuando requieras hacer un "debug" de la aplicación. Sirve para que el debugger encuentre los archivos fuentes.

// Saludos

miguelogm 12-03-2005 19:15:08

Muy bien, pero veo que el hilo empezo con ODBC, y continuo con el componente Zeus, yo quiero utilizar la BD para algo muy básico...quiero recorrer un directorios y sus sub-directorios y almacenar en mysql los ficheros contenidos en ellos y luego poder acceder a ellos a traves de la tabla mysql...
¿alguna recomendación?...he mirado haber si hay tutoriales o manuales aqui de eso pero no los he visto, por eso os pido esta ayudita, que como es para algo básico, quizas podais echarme una mano....En fin, basicamente esto de mysql en delphi:

- Crear una tabla
- Rellenar la tabla
- Acceder a la tabla

GRACIAS

miguelogm 15-03-2005 12:41:43

Hola buenas, ya he conseguido instalar tanto mysql y Zeos sin problemas, pero al conectarme, coge bien root y password, pero en la fase de conexion me lanza la siuiente excepcion: 'SQL Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client'
Supongo que se refiere a que no me soporta el protocolo 'mysql', nose como solucionarlo, el codigo que intento ejecutar es el ejemplo simple que viene en la carpeta examples\simple dentro de las librerias Zeos, que por cierto son una maravilla de la vida!.
Un saludo, y a ver si alguien me hecha un cable!

keyboy 15-03-2005 14:30:12

Cita:

Empezado por miguelogm
Supongo que se refiere a que no me soporta el protocolo 'mysql'

Más bien se refiere a que no soporta el formato de las contraseñas que usa MySql ya que cambió en la versión 4.x. Yo he tenido ese problema al conectarme con PHP ya que el binario que se distribuye para Windows usa una versión anterior de la librería cliente de MySql. Lo que he hecho es poner la contraseña de los usuarios de MySql en el formato antiguo:

Código:

update user
set password = old_password('tu contraseña')
where user='tu usuario'

Supongo que esto te puede servir pero fíjate también en cuál es el protocolo que está usando ZEOS. En la componente TZConnection puedes escoger qué librería usar en la propiedad Protocol aunque se supone que si escoges 'MySql' a secas ZEOS usará la más reciente.

Bye

miguelogm 15-03-2005 16:17:05

la verdad es que librerias, no se cual coge, segui los pasos de instalacion de Zeos, y copie las 3 librerias dll de mysql que vienen dentro del archivo zip de Zeos, mas concretamente estas 3 mysql40.dll, mysql320.dll, mysql323.dll que las he copiado en windows\system32.
El protocolo que esta usando Zeos, concretamente hay un combo que muestra los posibles, pero yo tengo elegido en este ejemplo el protocolo mysql, ya que mi objetivo es aprender a utilizar este protocolo en delphi, gracias a la maravilla de Zeos.
Voy a probar lo que me has comentado de la contraseña, a ver si paso o no de esa excepcion!!.
Luego os cuento!.
GRACIAS

miguelogm 15-03-2005 16:23:05

Poniendo en el shell de mysql esas lineas que me dices me da el siguiente error: ERROR 1046: No database selected.

Porque me dice que no hay seleccionada ninguna BD?, si yo aun no he creado ninguna tabla ni nada, unicamente instale mysql y cree mi usuario! :-S....cachinssss

miguelogm 15-03-2005 16:57:59

Creeis que una solucion es desinstalar la version estable de mysql-4.1.10a-win32 que tengo instalada y probar a poner la 5 a ver si rula la autenticacion, o simplemente actualizo la .dll a otra que encuentre mas moderna, o que hago...
Es que he probado a hacer la conexion yo en plan simple como ha dixho Roman mas arriba y el error sigue siendo el mismo: 'SQL Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client'

miguelogm 15-03-2005 17:09:18

Keyboy, he conseguido pasar la autenticacion, cambiando el protocolo de ZConnection a mysql-3.20, pero sigue fallando en la instruccion de crear la conexion:

Result := TZMySQLConnection.Create(Url, PlainDriver, HostName, Port,
Database, UserName, Password, TempInfo);

Puede ser pq no tengo ninguna tabla creada aun y el campo Database y TempInfo estan vacíos??

Pq ahora la excepcion si que es general...solo dice: 'Can not connect to SQL server' y mas concretamente es en el procedure 'TZMySQLConnection.Open'

¿Es que no se puede conectar uno al servidor sin tener aun una tabla creada?, porque entonces estoy apañao, ya que mi objetivo es crear la tabla en tiempo de ejecución!

roman 15-03-2005 17:38:42

Cita:

Empezado por miguelogm
Poniendo en el shell de mysql esas lineas que me dices me da el siguiente error: ERROR 1046: No database selected.

Porque me dice que no hay seleccionada ninguna BD?, si yo aun no he creado ninguna tabla ni nada, unicamente instale mysql y cree mi usuario! :-S....cachinssss

Quizá tú no hayas creado ninguna tabla pero la instalación de MySql sí que creó no una sino varias tablas, todas ellas en una base de de datos llamada `mysql` que se utiliza para todo el control de acceso al servidor.

Una de estas tablas es la tabla `user` en donde se almacenan los usuarios y contraseñas. Esta es la tabla que se actualiza con la instrucción UPDATE que te indicó keyboy. Pero no puedes realizar consultas a una base mientras no la selecciones. Así que antes de efectuar dicha consulta, en la línea de comandos de MySql, debes seleccionar la base `mysql`:

Código:

mysql> use mysql
// Saludos

miguelogm 15-03-2005 17:57:14

gracias, ya he estado leyendo,y como bien dices esta la tabla 'mysql', mas otra que ya he creado yo para hacer pruebas que la llamo 'mydb', dentro de la cual he creado un par de tablas. Desde la linea de comandos, va de puta madre, las uso, creo tablas, meto registros, etc...mi problema es intentar hacerlo desde delphi con el componente ZConnection, que siempre da el error de Can not connect to SQL server!! en procedure TZMySQLConnection.Open;, y le da igual que antes haya entrado en el promp y haya hecho use mydb o no.
Es decir, desde la linea de comandos no hay problemas es en el codigo delphi. :-(


La franja horaria es GMT +2. Ahora son las 10:05:51.

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