CONEXION A MYSQL

User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

CONEXION A MYSQL

Post by LuisPonce »

Hola

Estoy en el intento de usar MySql, y he bajado algnos ejemplos de conexion, el que no me dá error S_OK: OPEN, es este:

FUNCTION ConnServer()
Local cServer := "localhost"
Local cUser := "root"
Local cPass := "123456"

oCone:=tOleAuto():new("ADODB.connection")
oCone:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" +"DBPRUEBA" + ;
";uid=" + cUser + ;
";pwd=" + cPass )

If Empty(oCone)
MsgAlert(" No se Pudo Establecer la Conexion Con La Base De Datos..","Atencion")
Return(Nil)
EndIf

Return( Nil )

Entiendo que debo de instalar el "MySQL ODBC 3.51 Driver" que he bajado de su pagina, uso W7, lo instalé en Herramientas Administrativas, Origenes de Datos ODBC, DSN del Sistema y en Data Source Name puse BDPRUEBA, hice el test y se conecto!!!!!

Pero al momento de hace la conexion desde mi App no hace nada, con la funcion ConnServer, de arriba debe conectar, pero no pasa nada.

Como ficheros de cabecera he puesto:

#include "FiveWin.Ch"
#Include "Ado.ch"

Necesito algo mas ???

o al Enlazar, al generar el EXE necesito alguna libreria adicional ? uso el FW8.02

Alguna Idea ??

Gracias
Luis Ponce
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: CONEXION A MYSQL

Post by leandro »

Luis buen día

Con este código yo hago la conexión sin problemas...

Code: Select all

TRY
  oCon:=toleauto():new("adodb.connection")
CATCH oError
  MsgStop( "No se ha podido crear la conexión !", "Error de datos")
END

oCon:ConnectionString:="Driver={MySQL ODBC 3.51 Driver};Server="+oLamcla:cHost+";Port="+oLamcla:nPuerto+";User="+oLamcla:cUsuario+";Password="+oLamcla:cPassword+";Option=3;"
TRY
  oCon:Open()
CATCH oError
  MsgStop( "No pude abrir la conexión para crear las tablas !", "Error de datos")
  QUIT
END

cCommandSql := "USE "+oLamcla:nDBdat
TRY
  oCon:Execute(cCommandSql)
  //MSGINFO("antes de verificar empresa")
  pVerEmpr() //ejecuta el proceso de verificacion de empresas
CATCH oError
  IF MSGNOYES(oLamcla:mEdb1+CRLF+oLamcla:mEdb2+CRLF+oLamcla:mEdb3,oLamcla:mErco)
    cCommandSql := "CREATE DATABASE IF NOT EXISTS "+oLamcla:nDBdat
    TRY
      oCon:Execute(cCommandSql)
      pVerEmpr() //ejecuta el proceso de verificacion de empresas
    CATCH oError
       MSGINFO(oLamcla:mEdb4,oLamcla:mErco)
    END
  ELSE
    QUIT
  ENDIF
END
 
por otro lado que versión de mysql tienes instalada?, también puede ser que el driver sea un poco "viejo", para la verisón de mysql que estas usando.
Yo tengo ese controlador instalado y me funciona correctamente con la versión mysql-essential-5.1.48-win32.
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: CONEXION A MYSQL

Post by LuisPonce »

Leandror, probare tu codigo

Entiendo que podemos usar el ADO o TDolphin, cual es mas funcional ????

Gracias
Luis Ponce
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: CONEXION A MYSQL

Post by Daniel Garcia-Gil »

Hola
LuisPonce wrote:Leandror, probare tu codigo

Entiendo que podemos usar el ADO o TDolphin, cual es mas funcional ????

Gracias
Los dos son ampliamente funcionales,
la ventaja principal con ADO es que puedes usar multiples motores de bases de datos (ACCESS, MYSQL, SQLSERVER)
la desventaja de ADO es que tienes que instalar en los PC de los clientes los conectores porpios de cada motor y construir el DSN para la conexion, esta desventaja de ADO es la ventaja de MySql (TDolphin) que solo disrtribuyes el EXE con las DLL de mysql, la desventaja de TDolphin es que solo maneja MySql o MariaDB (no recuerdo si existe otro)

ahora depende de los alcances que tengas, si en futuros planeas usar distintos motores, tu opcion es usar ADO si no, tu mejor opcion es usar TDolphin o la TMySlq (distribuida por [x]harbour)
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: CONEXION A MYSQL

Post by russimicro »

Recomendación :

1. Determinar cual es el mejor motor SQL para su requerimiento inmediato.
2. Proyectar la complejidad de su aplicación
3. Realizar pruebas con datos reales y en los servidores finales (hosting, vsp, servidor dedicado, o en mi pc)

Tengo la experiencia con mysql + eagle1 y sqlrdd con postgres y mysql, en su momento fueron la solución perfecta, pero cuando se hizo mas compleja la App y querer usar un motor como postgres, etc (mejor rendimiento que mysql), tener compatibilidad de librerías ( xharbour + fivewin ) y las mismas herramientas de conexión ( Eagle1, tmysql, condor, etc...).
Actualmente estoy en la necesidad de cambiarme a otro producto y no depender de un tercero o de un solo motor sql. Por esto recomiendo ADO, que aunque se tenga instalar el ODBC en cada maquina, no es algo que quite mas de cinco minutos.

Saludos
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: CONEXION A MYSQL

Post by LuisPonce »

Daniel, Leandro

Gracias por sus respuestas, una consulta el ADO del cual hablamos es mismo que, esta en el foro ?

Me refiero a este:

Nuevo AdoRDD (libre)
by Antonio Linares » Thu Apr 26, 2007 8:40 am


Daniel, como uso, como hago la conexion y de donde bajo la TDolphin ???

Gracias
Luis Ponce
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: CONEXION A MYSQL

Post by LuisPonce »

Me conecte!!

Con esta funcion que baje del foro:

#include "FiveWin.Ch"
#Include "Ado.ch"

FUNCTION ConnServer()
LOCAL oCone
Local cServer := "localhost" //Ubicación del servidor
Local cUser := "root" // usuario
Local cPass := "123456" // password del usuario
*Local cDatabase := "c:\appserv\MySql\Data\Colegio" // base de datos MySql
Local cDatabase := "colegio" // base de datos MySql
*Local cDatabase := cPath+"\database" // base de datos MySql


oCone :=tOleAuto():new("ADODB.connection")
oCone:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" + cDatabase + ;
";uid=" + cUser + ;
";pwd=" + cPass )

If Empty(oCone)
MsgAlert(" No se Pudo Establecer la Conexion Con La Base De Datos..","Atencion")
Return(Nil)
else
MsgAlert(" Se establecio la Conexion Con La Base De Datos..","Atencion")
EndIf


Return( Nil )


En teoria estoy conectado, ahora como hago para abrir las tablas y consultar los registros ???

Solo use esos dos ficheros de cabecera, estoy usando el ADO nativo del FW? debo hacer RecordSet, para recoger consultas? como
Last edited by LuisPonce on Thu Oct 03, 2013 1:17 am, edited 1 time in total.
Luis Ponce
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: CONEXION A MYSQL

Post by Daniel Garcia-Gil »

LuisPonce wrote:Daniel, como uso, como hago la conexion y de donde bajo la TDolphin ???
a TDolphin lo estoy cambiando de SVN a GIT, esta todo el codigo fuente disponible

https://bitbucket.org/danielgarciagil/t ... ommits/all

para descargarlo sin instalar el GIT puedes hacerlo desde aqui

https://bitbucket.org/danielgarciagil/t ... master.zip

dentro encontraras muchos ejemplos, solo edita el .bat que necesites para construir la lib
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: CONEXION A MYSQL

Post by Daniel Garcia-Gil »

LuisPonce wrote:Me conecte!!
Solo use esos dos ficheros de cabecera, estoy usando el ADO nativo del FW?
ADO es nativo de window, no se si estaran los conectores funcionando para otra plaraforma

tanto TDolphin como TMySql funciona en cualquier plataforma, no requiere de la existencia de un GUI pues esta diseñado para trabajar con [x]Harbour

pero como te comente anteriormente, las deficiencias de uno son las virtudes de otro, solo tu podras ponderar tus necesidades de cual usar
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

Re: CONEXION A MYSQL

Post by csincuir »

Luis, solo para que tengas otros parámetros a tomar en cuenta.

Yo he trabajado por muchos años con MySQL con la librería Eagle1, y te puedo decir que la ventaja es que no hay que instalar ningún conector adicional, solo se necesita, tu ejecutable y la DLL de coneccion a MySQL.
De esta forma he trabajado con Windows desde XP hasta 8, sin ningún problema y con cualquier versión de MySQL, desde la 4.1 hasta la 5.5, que he probado, y utilizando la misma DLL de coneccion en todas estas versiones.

Y lo mejor, es que me funciona todo correctamente en Linux (Fedora, Ubunto, Mint, etc.), utilizando Wine, con lo que le dado la opción al cliente de utilizar terminales para trabajar con Linux, sin necesidad de estar comprando licencias de Windows.

Saludos cordiales.

Carlos.
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: CONEXION A MYSQL

Post by MarioG »

Daniel Garcia-Gil wrote: a TDolphin lo estoy cambiando de SVN a GIT, esta todo el codigo fuente disponible

https://bitbucket.org/danielgarciagil/t ... ommits/all

para descargarlo sin instalar el GIT puedes hacerlo desde aqui

https://bitbucket.org/danielgarciagil/t ... master.zip

dentro encontraras muchos ejemplos, solo edita el .bat que necesites para construir la lib
Daniel;
No entiendo bien como usar bitbucket (ya me subscribi)
Tampoco se decirte si necesito actualizar mi TDolphin (como se cual es la última version?)
Sugerencia: si ter dan los tiempos, sería bueno un "paso a paso en tu Blog"

muchas gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: CONEXION A MYSQL

Post by Daniel Garcia-Gil »

Mario

bitbucket se encarga de comprimir todo y colocar el link de descarga

https://bitbucket.org/danielgarciagil/t ... master.zip
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: CONEXION A MYSQL

Post by MarioG »

gracias Daniel
Para los duros, como yo, con el ingles (con onda y sin ofender) :lol: acá dejo un enlace que explica como usar Bitbucket
http://www.memoriasdeunaprendiz.com/pro ... gitbucket/
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: CONEXION A MYSQL

Post by leandro »

Luis Buen día

Esta es la forma como yo hago las consultas:

Primero que todo hay que crear el recorset. (bueno si tienes creadas las tablas que vas a usar)

Code: Select all

oVar   := "SELECT * from "+oLamcla:tBode+" ORDER BY "+alltrim(oLamcla:vOrden)
TRY
  oLamcla:oRsBodega:=tOleAuto():New("ADODB.RecordSet")
CATCH oError
  MsgStop( "No se ha podido crear el RECORDSET !","Error de Datos" )
END

oLamcla:oRsBodega:CursorLocation  := adUseClient //adUseServer
oLamcla:oRsBodega:LockType        := adLockOptimistic
oLamcla:oRsBodega:CursorType      := adOpenKeyset
oLamcla:oRsBodega:Source          := oVar
oLamcla:oRsBodega:ActiveConnection( oLamcla:oServer )
TRY
  oLamcla:oRsBodega:Open()
CATCH oError
  MsgStop( "No se ha podido ejecutar el comando !", "Error de Datos" )
END
 
Luego esta es una de las formas de hacer altas, bajas y modificaciones, se trabaja sobre el recorset y este se encarga de actualizar la tabla.

Code: Select all

************************************
*Graba los datos en la base de datos
************************************
PROC pGrabBod()

uFec:=date()
uTim:=subs(time(),1,8)
uCou:=alltrim(oLamcla:vCous)

IF oLamcla:vgraba=.t.
  oLamcla:oRsBodega:Addnew()
  oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
  oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
  oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
  oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
  oLamcla:oRsBodega:Fields("umovim"):value := 0
  oLamcla:oRsBodega:Fields("usuari"):value := uCou
  oLamcla:oRsBodega:Fields("ufecha"):value := uFec
  oLamcla:oRsBodega:Fields("uhoras"):value := uTim
  oLamcla:oRsBodega:Update()
ELSE
  oLamcla:oRsBodega:Fields("b_bodega"):value := alltrim(oB2vg1)
  oLamcla:oRsBodega:Fields("b_nombre"):value := alltrim(oB2vg2)
  oLamcla:oRsBodega:Fields("b_direcc"):value := alltrim(oB2vg3)
  oLamcla:oRsBodega:Fields("b_telefo"):value := alltrim(oB2vg4)
  oLamcla:oRsBodega:Fields("usuari"):value := uCou
  oLamcla:oRsBodega:Fields("ufecha"):value := uFec
  oLamcla:oRsBodega:Fields("uhoras"):value := uTim
  oLamcla:oRsBodega:Update()
ENDIF
oLamcla:oRsBodega:Requery()
oLamcla:oBrwBode:Refresh()
oCuadr1:end()
 
Para eliminar

Code: Select all

****************
*Borrar Registro
****************
PROC pBorrBod()
nRegistros := oLamcla:oRsBodega:RecordCount()
IF nRegistros#0
  oM2vg1:=oLamcla:oRsBodega:Fields("b_bodega"):Value
  oM2vg2:=oLamcla:oRsBodega:Fields("b_nombre"):Value
  IF MSGNOYES("Confirma Eliminar Bodega"+CRLF+;
              "Código:->"+alltrim(oM2vg1)+CRLF+;
          "Nombre:->"+alltrim(oM2vg2),oLamcla:mCoto)
    oLamcla:oRsBodega:Delete()
    oLamcla:oRsBodega:Requery()
    oLamcla:oBrwBode:Refresh()
  ENDIF
ENDIF
 
Otra forma de hacerlo es la siguiente:
Agregar

Code: Select all

  vConsCB:="INSERT INTO "+oLamcla:tBarr+" (ii_articu,ii_nombre,ii_codbar,ii_madres,ii_tallas,ii_colore,umovim,usuari,ufecha,uhoras) VALUES ('"+;
           alltrim(oA1vg1)+"','"+alltrim(oA1vg2)+"','','1','','',0,'"+uCou+"','"+uFe2+"','"+uTim+"')"
  TRY
    oLamcla:oServer:Execute(vConsCB)
  CATCH oError
    MsgInfo(oLamcla:mRegi,oLamcla:mDato)
  END
 
Modificar

Code: Select all

  vConsCB:="UPDATE "+oLamcla:tBarr+" SET ii_nombre='"+;
           alltrim(oA1vg2)+"',usuari='"+uCou+"',ufecha='"+uFe2+"',uhoras='"+uTim+"' WHERE ii_articu='"+alltrim(oA1vg1)+"'"
  TRY
    oLamcla:oServer:Execute(vConsCB)
  CATCH oError
    MsgInfo(oLamcla:mRegi,oLamcla:mDato)
  END
 
Eliminar

Code: Select all

    vConsCB:="DELETE FROM "+oLamcla:tBarr+" WHERE ii_articu='"+alltrim(oM2vg1)+"'"
    TRY
      oLamcla:oServer:Execute(vConsCB)
    CATCH oError
      MsgInfo(oLamcla:mRegi,oLamcla:mDato)
    END
 

Seleccionar una base de datos

Code: Select all

cCommandSql := "USE "+oLamcla:nDBdat
TRY
  oCon:Execute(cCommandSql)
CATCH oError
  MsgInfo("No pude activar la base de datos")
END
 
Para crear las tablas

Code: Select all

vQuery := "CREATE TABLE IF NOT EXISTS "+oLamcla:tEmpr+" "
vQuery += "("
vQuery += "e_codi VARCHAR(2)   NOT NULL ,"
vQuery += "e_nomb VARCHAR(50)  NOT NULL ,"
vQuery += "e_nits VARCHAR(15)  NOT NULL ,"
vQuery += "e_digi VARCHAR(2)   NULL ,"
vQuery += "e_gere VARCHAR(40)  NULL ,"
vQuery += "e_domi VARCHAR(40)  NULL ,"
vQuery += "e_dire VARCHAR(50)  NULL ,"
vQuery += "e_tele VARCHAR(20)  NULL ,"
vQuery += "e_faxs VARCHAR(20)  NULL ,"
vQuery += "e_host VARCHAR(50)  NOT NULL ,"
vQuery += "e_hore VARCHAR(50)  NOT NULL ,"
vQuery += "e_usua VARCHAR(20)  NOT NULL ,"
vQuery += "e_pass VARCHAR(20)  NOT NULL ,"
vQuery += "e_daba VARCHAR(20)  NOT NULL ,"
vQuery += "e_prto VARCHAR(10)  NOT NULL ,"
vQuery += "e_anos VARCHAR(99)  NOT NULL ,"
vQuery += "e_nota VARCHAR(99)  NULL ,"
vQuery += "e_fech DATE         NULL ,"
vQuery += " PRIMARY KEY (e_codi)"
vQuery += ") "
vQuery += " TYPE = MYISAM;"
TRY
  oCon:Execute(vQuery)
CATCH oError
  MsgInfo("La tabla "+oLamcla:tEmpr+" NO pudo ser creada")
END
 
Espero te sea de ayuda
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
LuisPonce
Posts: 190
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU
Contact:

Re: CONEXION A MYSQL

Post by LuisPonce »

Leandro

Gracias por los ejemplos, me parece que le faltan lineas al primero, estas consultas funcionan con el ADO ? con el cual hice la conexion ?

Carlos,

Donde puedo bajar... u obtener mas informacion sobre Eagle1, ejemplos

Att.
Luis Ponce
Post Reply