CONEXION A MYSQL

CONEXION A MYSQL

Postby LuisPonce » Tue Oct 01, 2013 3:13 pm

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
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: CONEXION A MYSQL

Postby leandro » Tue Oct 01, 2013 6:50 pm

Luis buen día

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

Code: Select all  Expand view

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: CONEXION A MYSQL

Postby LuisPonce » Wed Oct 02, 2013 7:00 pm

Leandror, probare tu codigo

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

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

Re: CONEXION A MYSQL

Postby Daniel Garcia-Gil » Wed Oct 02, 2013 7:44 pm

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)
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: CONEXION A MYSQL

Postby russimicro » Wed Oct 02, 2013 8:24 pm

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
russimicro
 
Posts: 229
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: CONEXION A MYSQL

Postby LuisPonce » Wed Oct 02, 2013 11:32 pm

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: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: CONEXION A MYSQL

Postby LuisPonce » Thu Oct 03, 2013 1:14 am

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
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: CONEXION A MYSQL

Postby Daniel Garcia-Gil » Thu Oct 03, 2013 1:15 am

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/tdolphin/get/master.zip

dentro encontraras muchos ejemplos, solo edita el .bat que necesites para construir la lib
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: CONEXION A MYSQL

Postby Daniel Garcia-Gil » Thu Oct 03, 2013 1:22 am

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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: CONEXION A MYSQL

Postby csincuir » Thu Oct 03, 2013 11:46 am

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.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: CONEXION A MYSQL

Postby MarioG » Thu Oct 03, 2013 12:20 pm

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/tdolphin/get/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
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: CONEXION A MYSQL

Postby Daniel Garcia-Gil » Thu Oct 03, 2013 12:43 pm

Mario

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

https://bitbucket.org/danielgarciagil/tdolphin/get/master.zip
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: CONEXION A MYSQL

Postby MarioG » Thu Oct 03, 2013 12:59 pm

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/programacion/git-gitbucket/
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: CONEXION A MYSQL

Postby leandro » Thu Oct 03, 2013 1:45 pm

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  Expand view

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  Expand view

************************************
*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  Expand view

****************
*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  Expand view

  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  Expand view

  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  Expand view

    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  Expand view

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  Expand view

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 AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1481
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: CONEXION A MYSQL

Postby LuisPonce » Fri Oct 04, 2013 3:37 pm

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
User avatar
LuisPonce
 
Posts: 192
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 9 guests