jblancogl Cdt

Registrado: 21 Nov 2005Mensajes: 1
|
Publicado: Dom 04 Dic, 2005 1:03 am Asunto: Conectarse a MySQL utilizando la api directamente. |
|
|
No encontre nada en el foro sobre este tema y tras buscar un poco por internet conseguí enlazar con el servidor MySQL con el Builder.
Creo que puede servir de ayuda a la gente y por eso muestro los pasos necesarios para hacer esto posible.
1º - Antes de nada copiamos la dll de MySQL libmysql.dll donde tengamos almacenados los fuentes del programa.
2º - Creamos la libreria ayudandonos de la herramienta de borland implib. Su uso es muy sencillo; desde la línea de comando escribimos implib libmysql.lib libmysql.dll. Haremos lo mismo pero usando otra herramienta de borland llamada impdef, su uso es igual de sencillo: impdef libmysql.def libmysql.dll.
3º - Una vez hecho esto añadimos ambos archivos resultantes (libmysql.lib y libmysql.def) al proyecto.
4º - Ahora nos metemos con los archivos de cabeza de MySQL. En concreto tenemos que tratar mysql.h. Debemos reemplazar el código de esta manera:
| Código: |
#ifdef __LCC__
#include <winsock.h> /* For windows */
#endif
|
por esto
| Código: |
#if ( defined(__LCC__) || defined(__WIN__) )
#include <winsock.h> /* For windows */
#endif
|
Allí donde vayamos a trabajar con la base de datos tendremos que escribir lo siguiente:
| Código: |
#define __WIN__
#include "mysql.h"
|
5º - Bueno, ahora solo queda inicializar la dll,
| Código: |
MYSQL *mySQL;
mySQL = mysql_init(NULL);
|
6º - Finalmente pongo un ejemplo para que veais el modo de trabajo:
| Código: |
MYSQL *conn;
MYSQL_RES *myRES;
MYSQL_ROW myROW;
AnsiString aStr;
conn = mysql_init (NULL);
if (conn == NULL)
ShowMessage("mysql_init() ha fallado (seguramente fuera de memoria)");
if(mysql_real_connect
(
conn, /* puntero de conexión al handler */
"171.0.0.1", /* nombre del servidor a conectarse */
"usuario", /* nombre de usuario */
"contrasena", /* contraseña */
"basedatos", /* base de datos a usar */
0, /* puerto (usar por defecto) */
NULL, /* socket (usar por defecto) */
0) /* flags (ninguno) */
== NULL)
{
ShowMessage(mysql_error(conn));
}
else ShowMessage("Conectado");
myRES = mysql_list_tables(conn, NULL);
if(myRES)
{
for(unsigned int i = 0; i < myRES->row_count; i++)
{
myROW = mysql_fetch_row(myRES);
for(unsigned int j = 0; j < mysql_num_fields(myRES); j++)
{
aStr.sprintf("%s", myROW[j]);
ComboBox1->Items->Add(aStr);
}
}
mysql_free_result(myRES);
}
mysql_close(conn);
|
Bueno eso es todo, espero que le sirva a alguien, saludo. |
|