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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question 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
Responder Con Cita
  #2  
Antiguo 12-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 12-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question

hola que tal

es mejor usar zeos que ODBC?

le problema es que no se que es zeos


gracias
Responder Con Cita
  #4  
Antiguo 12-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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

Última edición por roman fecha: 12-11-2004 a las 21:22:30.
Responder Con Cita
  #5  
Antiguo 12-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question

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
Responder Con Cita
  #6  
Antiguo 12-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por sakuragi
le doy en activar.

ya que dan activados
No es Activar sino Install (click derecho sobre cada componente)

// Saludos
Responder Con Cita
  #7  
Antiguo 13-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question

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;"
Responder Con Cita
  #8  
Antiguo 13-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues ¡vaya que es raro! ¿Qué le has hecho a tu sistema?

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

Tools|Enviroment Options|Library|Library Path

// Saludos
Responder Con Cita
  #9  
Antiguo 13-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question

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.
Responder Con Cita
  #10  
Antiguo 13-11-2004
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 13-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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"

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
Responder Con Cita
  #12  
Antiguo 12-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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!
Responder Con Cita
  #14  
Antiguo 15-03-2005
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
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
Responder Con Cita
  #15  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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
Responder Con Cita
  #16  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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
Responder Con Cita
  #17  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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'
Responder Con Cita
  #18  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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!
Responder Con Cita
  #19  
Antiguo 15-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #20  
Antiguo 15-03-2005
miguelogm miguelogm is offline
Miembro
 
Registrado: nov 2004
Posts: 21
Poder: 0
miguelogm Va por buen camino
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. :-(
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 01:50:31.


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