Page 1 of 2

Mysql y ADO

PostPosted: Thu Jul 24, 2008 4:01 am
by Manuel Valdenebro
¿Para atacar una base de datos MySql con ADO, alguien usa un provider OLEDB o solamente se está realizando la conexión a través de ODBC?

Muchas gracias.

PostPosted: Thu Jul 24, 2008 1:24 pm
by Kleyber
Manuel,

Cuando hice algunos testes con ADO y MySQL (hace mucho tiempo) yo los hice con MyOLEDB, de MySQL. Date una vuelta por el sitio de MySQL o mira aca: http://sourceforge.net/projects/myoledb/

Saludos,

PostPosted: Thu Jul 24, 2008 1:33 pm
by Adolfo
Manuel

Yo utilizo el Cliente ODBC 3.5.1, ya medio antiguo y me he encontrado con la sorpresa que existe una version mas nueva, del 15 de abril de este año, que es la 5.1.4 (aun no la pruebo,la estoy descargando)

Bueno el tema es que la uso sin problemas.

Espero te sirva.
Desde Chile
Adolfo

PostPosted: Fri Jul 25, 2008 5:29 am
by Manuel Valdenebro
Kleyber,

Funciona perfectamente.

Muito obrigado.

PostPosted: Fri Jul 25, 2008 5:32 am
by Manuel Valdenebro
Adolfo,

Cuando en mis aplicaciones uso una BD utilizo normalmente Oracle. Pero estoy diseñando un programa de prueba, para que de manera facil, pueda trabajar, indistintamente, con cualquiera de las BD conocidas (MySql, Oracle, Postgre, SqlServer, etc).

Voy a estudiar tu ADOBASE porque seguro que de su código, aprenderé bastantes cosas.

Muchas gracias.

PostPosted: Sun Aug 03, 2008 5:48 pm
by Armando
Manuel:

He intentado probar MyOleDb con la siguiente conexión:

Code: Select all  Expand view
oApp:oCon:ConnectionString := "Provider=MySQLProv;Location=localhost;Data Source=sapwin;User Id=root;Password=mipass;"


Pero no tengo éxito, podrías compartir tu código y experiencia ?

Saludos

PostPosted: Sun Aug 03, 2008 10:04 pm
by Manuel Valdenebro
Armando,

Primero decirte que la BD con la que trabajo es Oracle que me parece, junto con Postgres, la mas fiable. Con MySql tan solo estoy haciendo mi primeros pinitos para usarla en internet. Me imagino que en este foro hay colegas con muchisima mas experiencia que yo con MySql.

Según me aconsejó Kleyber en este mismo tema, bajé el provider de MySql, lo instalé y funciona perfectamente. Utilizo la misma cadena de conexión que con Oracle, para poder cambiar de una BD a otra, sin cambiar el resto del código.

1) ¿Has instalado el provider OLEDB?.

2) En caso afirmativo, yo realizo la conexión de la siguiente forma:

cProv := "MySqlProv.3.9" // este es el provider
cHost := "prueba" // esta es la BD.
cUser := "root" // usuario
cPass := "*****" // clave usuario

oCon := CreateObject('ADODB.Connection')

oCon:ConnectionString := "Provider=" + cProv + ";" + ;
"Data Source= " + cHost + ";" + ;
"User ID=" + cUser + ";" + ;
"Password=" + cPass + ";"

TRY
oCon:Open()
lSeguir := .t.
CATCH oError
AdoError(oCon, oError) // funcion personal
lSeguir := .f.
END

PostPosted: Mon Aug 04, 2008 12:24 am
by Armando
Manuel:

Gracias por la respuesta, prácticamente tenemos lo mismo, solo que me queda una duda en parte de tu código, la duda es que no veo la dirección del host (cHost := "localhost"), en su lugar veo el nombre de la database

Code: Select all  Expand view
cHost := "prueba" // esta es la BD.


en oracle no es necesario ???

Saludos

PostPosted: Mon Aug 04, 2008 4:55 am
by Manuel Valdenebro
Armando wrote:Manuel:

Gracias por la respuesta, prácticamente tenemos lo mismo, solo que me queda una duda en parte de tu código, la duda es que no veo la dirección del host (cHost := "localhost"), en su lugar veo el nombre de la database

Code: Select all  Expand view
cHost := "prueba" // esta es la BD.


en oracle no es necesario ???

Saludos


En Oracle es diferente. Oracle trabaja con una sola BD y cada usuario de la BD, tiene tablas propias. En Host se pone el nombre del OracleService (puede haber varios) que se encuentra en la tabla tsname.

PostPosted: Mon Aug 04, 2008 12:13 pm
by Armando
Gracias Manuel

PostPosted: Mon Aug 04, 2008 8:23 pm
by Manuel Valdenebro
Armando,

Se me olvido decirte que con Mysql estoy trabajando en local. Me imagino que para trabajar con un servidor será necesario indicar el host.

PostPosted: Mon Aug 04, 2008 9:56 pm
by Armando
Manuel:

Llevas razón con MySql en forma local es tan simple como:

server=localhost

pero en forma remota debemos poner la IP del servidor, por ejemplo:

server=147.187.347.157

Pero ya entran las complicaciones, que pasa si no cuentas con IP fija ?,
esa es otra historia !.

Saludos

PostPosted: Tue Aug 05, 2008 11:55 am
by Kleyber
Armando,

Para estes casos puedes usar el NO-IP (www.no-ip.com) or DDNS (http://www.dyndns.com/services/dns/dyndns/) donde puedes asignar un host fijo, mismo que tu IP sea dinámico. Quizas esto te ayude.

Saludos,

PostPosted: Tue Aug 05, 2008 4:47 pm
by Armando
Kleyber:

Gracias por la respuesta, efectivamente así lo hago pero con MySql y ODBC, sin embargo con MyOleDb no logro tener éxito.

Se hace la conexión, al parecer bien, pero al intentar abrir la DataBase me dice que no la encuentra.

Saludos

PostPosted: Tue Aug 05, 2008 9:04 pm
by Manuel Valdenebro
Armando,

¿Porque no tratas de probar con FdataLink()? Si despues de poner los datos, y pulsar PROBAR CONEXION, la realiza con éxito, le das a ACEPTAR y te devuelve la cadena de conexión. La función original es de Biel.

FUNCTION FDATALINK ( )
LOCAL oDataLink := CreateObject("Datalinks")
LOCAL oCon := oDataLink:PromptNew()

IF !EMPTY(oCon)
valert (oCon:ConnectionString)
RETURN oCon:ConnectionString
ELSE
RETURN ' '
ENDI

RETURN nil