en una de las preguntas de esta seccion lei que existe un OBDC, generico es ODBC MySQL.
necesito forsosamente este OBDC para hacer la conexion?
la verdad nunca he manejado c bulder con bases de datos y soy super novata en esto
sale!
bye!
Moderador: yalmar



galus escribió:Hola!
Aqui dejo un programa en "C++ builder" superbásico que establece una conexión con una BBDD MySQL, y muestra el contenido de una tabla en un ListBox llamado lbxResultados.
Para que vaya correctamente, será necesario añadir al proyecto (Add to Project) la cabecera MySQL.h (incluida en la carpeta donde está el servidor MySQL) y la librería libmySQL.lib.
Si no teneis esta última, podeis lograrla de la siguiente manera: copiar la librería libmySQL.dll a la carpeta "bin" del builder. Desde el simbolo del sistema (pantalla negra) ejecutar los siguiente:
C:\directorio>implib.exe libmysql.lib libmysql.dll
Y lograreis la libmySQL.lib que tendreís que añadir al proyecto.
Bueno, pues lo que queda es copiar lo siguiente en vuestro modulo principal (Unit1.cpp, Main.cpp...). No os olvideis de declarar la función showContents en la cabecera Unit1.h
----------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <vcl.h>
#pragma hdrstop
#include <winsock2.h>
#include "mysql.h"
// cambir según mi configuración
#define TABLE_OF_INTEREST "tabla"
#define SERVER_NAME "localhost"
#define DB_USER "root"
#define DB_USERPASS ""
#define DB_NAME "proba"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MYSQL *hnd=NULL; // conexión MySQL
const char *sinf=NULL; // información del servidor MySQL
String tempo_sinf;
hnd = mysql_init(NULL);
if (NULL == mysql_real_connect(hnd,SERVER_NAME,DB_USER,DB_USERPASS,DB_NAME,0,NULL,0))
{
ShowMessage("Problema al conectarse a la base de datos "DB_NAME" en "SERVER_NAME);
}
else
{
ShowMessage("Conectado a la base de datos "DB_NAME" en "SERVER_NAME" como usuario '"DB_USER"'");
sinf = mysql_get_server_info(hnd);
if (sinf != NULL)
{
showContents(hnd,TABLE_OF_INTEREST);
}
else
{
ShowMessage("No se ha podido lograr la información del servidor");
}
mysql_close(hnd);
}
}
//---------------------------------------------------------------------------
void TForm1::showContents(MYSQL *handle,const char *tbl)
{
MYSQL_RES *res=NULL; // resultado de la sentencia
MYSQL_ROW row; // una fila del resultado obtenido
char sql[1024], // sentencia SQL a usar
commastr[2]; // para poner comas en el texto a mostrar
int i,numf=0; // numero de campos obtenidos
String tempo_tbl;
String tempo_resultado;
tempo_tbl=tbl;
memcpy(sql, "select * from tabla",100);
if (!mysql_query(handle,sql))
{
res = mysql_use_result(handle);
if (res)
{
numf = mysql_num_fields(res);
row = mysql_fetch_row(res);
while (row)
{
commastr[0]=commastr[1]=(char)NULL;
for (i=0;i<numf;i++)
{
if (row[i] == NULL)
{
tempo_resultado=tempo_resultado+commastr;
}
else
{
tempo_resultado=tempo_resultado+commastr+row[i];
}
commastr[0]=',';
}
this->lbxResultados->Items->Add(tempo_resultado);
row = mysql_fetch_row(res);
}
mysql_free_result(res);
}
else
{
ShowMessage("No se ha podido mostrar el resultado");
}
}
else
{
ShowMessage("No se ha podido ejecutar la sentencia");
}
return;
}
--------------------------------------------------------------------------------

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado