conectar dev c++ con mysql
Publicado por Daniel (1 intervención) el 11/08/2010 22:34:59
Hola soy estudiante de programacion y necesito por favor poder conectar una base de datos mysql desde dev c++ este es el codigo:
/*
Name: MySQL Ejemplo 1
Author: Daniel
Date: 07/08/2010
Description: Ejemplo para mostrar contenidos de bases de datos usando MySQL.
Nota: incluir la opción "-lmysql" en las opciones del linker
dentro de las opciones de proyecto.
*/
// Includes...
#include <iostream>
#include <windows.h>
#include <mysql/mysql.h>
#include <mysql/mysqld_error.h>
#include <cstring>
#include <cstdio>
using namespace std;
// Programa principal
int main()
{
// Variables
MYSQL *myData;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *columna;
int i, j, k, l;
unsigned long *lon;
MYSQL_ROW_OFFSET pos;
// Intentar iniciar MySQL:
if(!(myData = mysql_init(0))) {
// Imposible crear el objeto myData
cout << "ERROR: imposible crear el objeto myData." << endl;
rewind(stdin);
getchar();
return 1;
}
// Debe existir un usuario "curso" con clave de acceso "clave" y
// con al menos el privilegio "SELECT" sobre la tabla
// "prueba.gente"
if(!mysql_real_connect(myData, NULL, "root", "123","creditos", MYSQL_PORT, NULL, 0)) {
// No se puede conectar con el servidor en el puerto especificado.
cout << "Imposible conectar con servidor mysql en el puerto"
<< MYSQL_PORT << " Error: " << mysql_error(myData) <<
endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 1;
}
// Conectar a base de datos.
if(mysql_select_db(myData, "creditos")) {
// Imposible seleccionar la base de datos, posiblemente no existe.
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Hacer una consulta con el comando "SELECT * FROM gente":
if(mysql_query(myData, "SELECT * FROM cuenta")) {
// Error al realizar la consulta:
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Almacenar el resultado de la consulta:
if((res = mysql_store_result(myData))) {
// Obtener el número de registros seleccionados:
i = (int) mysql_num_rows(res);
// Obtener el número de columnsa por fila:
j = (int) mysql_num_fields(res);
// Mostrar el número de registros seleccionados:
cout << "Consulta: SELECT * FROM cuenta" << endl;
cout << "Numero de filas encontradas: " << i << endl;
cout << "Numero de columnas por fila: " << j << endl;
// Información sobre columnas usando mysql_fetch_field:
cout << endl << "Informacion sobre columnas:" << endl;
for(l = 0; l < j; l++) {
columna = mysql_fetch_field(res);
cout << "Nombre: " << columna->name << endl;
cout << "Longitud: " << columna->length << endl;
cout << "Valor por defecto: " << (columna->def ?
columna->def : "NULL") << endl;
}
cout << endl;
// Información sobre columnas usando mysql_fetch_fields:
cout << endl << "Informacion sobre columnas:" << endl;
columna = mysql_fetch_fields(res);
for(l = 0; l < j; l++) {
cout << "Nombre: " << columna[l].name << endl;
cout << "Longitud: " << columna[l].length << endl;
cout << "Valor por defecto: " << (columna[l].def ?
columna[l].def : "NULL") << endl;
}
cout << endl;
// Información sobre columnas n, usando
mysql_fetch_field_direct:
cout << endl << "Informacion sobre columna 1:" << endl;
columna = mysql_fetch_field_direct(res, 1);
cout << "Nombre: " << columna->name << endl;
cout << "Longitud: " << columna->length << endl;
cout << "Valor por defecto: " << (columna->def ? columna->def : "NULL") << endl;
cout << endl;
// Leer registro a registro y mostrar:
l=1;
for(l = 0; l < i; l++) {
row = mysql_fetch_row(res);
lon = mysql_fetch_lengths(res);
cout << "Registro no. " << l+1 << endl;
// Mostrar cada campo y su longitud:
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]);
cout << " longitud: " << lon[k] << endl;
}
}
cout << endl;
// Mostrar sólo 3ª fila:
mysql_data_seek(res, 2);
row = mysql_fetch_row(res);
cout << "Tercera fila" << endl;
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
// Almacenar posición de la fila actual (la 4ª):
pos = mysql_row_tell(res);
// Lectura de filas hasta el final:
while(mysql_fetch_row(res));
// Recuperar la posición guardada:
mysql_row_seek(res, pos);
row = mysql_fetch_row(res);
cout << "Cuarta fila" << endl;
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
cout << endl;
// Liberar el resultado de la consulta:
mysql_free_result(res);
}
// El mismo proceso usando mysql_use_result:
// Hacer una consulta con el comando "SELECT * FROM gente":
if(mysql_query(myData, "SELECT * FROM cuenta")) {
// Error al realizar la consulta:
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Mostrar todas las filas:
if((res = mysql_use_result(myData))) {
j = (int) mysql_num_fields(res);
while(row = mysql_fetch_row(res)) {
for(k = 0 ; k < j ; k++)
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
// Liberar el resultado de la consulta:
mysql_free_result(res);
}
// Cerrar la conexión
mysql_close(myData);
// Esperar a que se pulse una tecla y salir.
rewind(stdin);
getchar();
return 0;
}
Bueno los errores que se presentan son:
linker error undefined reference to mysql_init@4'
linker error undefined reference to mysql_real_connect@32'
linker error undefined reference to mysql_error@4'
linker error undefined reference to mysql_close@4'
linker error undefined reference to mysql_select@4'
tengo instalada la libreria libmysql pero igual no me funciona
/*
Name: MySQL Ejemplo 1
Author: Daniel
Date: 07/08/2010
Description: Ejemplo para mostrar contenidos de bases de datos usando MySQL.
Nota: incluir la opción "-lmysql" en las opciones del linker
dentro de las opciones de proyecto.
*/
// Includes...
#include <iostream>
#include <windows.h>
#include <mysql/mysql.h>
#include <mysql/mysqld_error.h>
#include <cstring>
#include <cstdio>
using namespace std;
// Programa principal
int main()
{
// Variables
MYSQL *myData;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *columna;
int i, j, k, l;
unsigned long *lon;
MYSQL_ROW_OFFSET pos;
// Intentar iniciar MySQL:
if(!(myData = mysql_init(0))) {
// Imposible crear el objeto myData
cout << "ERROR: imposible crear el objeto myData." << endl;
rewind(stdin);
getchar();
return 1;
}
// Debe existir un usuario "curso" con clave de acceso "clave" y
// con al menos el privilegio "SELECT" sobre la tabla
// "prueba.gente"
if(!mysql_real_connect(myData, NULL, "root", "123","creditos", MYSQL_PORT, NULL, 0)) {
// No se puede conectar con el servidor en el puerto especificado.
cout << "Imposible conectar con servidor mysql en el puerto"
<< MYSQL_PORT << " Error: " << mysql_error(myData) <<
endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 1;
}
// Conectar a base de datos.
if(mysql_select_db(myData, "creditos")) {
// Imposible seleccionar la base de datos, posiblemente no existe.
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Hacer una consulta con el comando "SELECT * FROM gente":
if(mysql_query(myData, "SELECT * FROM cuenta")) {
// Error al realizar la consulta:
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Almacenar el resultado de la consulta:
if((res = mysql_store_result(myData))) {
// Obtener el número de registros seleccionados:
i = (int) mysql_num_rows(res);
// Obtener el número de columnsa por fila:
j = (int) mysql_num_fields(res);
// Mostrar el número de registros seleccionados:
cout << "Consulta: SELECT * FROM cuenta" << endl;
cout << "Numero de filas encontradas: " << i << endl;
cout << "Numero de columnas por fila: " << j << endl;
// Información sobre columnas usando mysql_fetch_field:
cout << endl << "Informacion sobre columnas:" << endl;
for(l = 0; l < j; l++) {
columna = mysql_fetch_field(res);
cout << "Nombre: " << columna->name << endl;
cout << "Longitud: " << columna->length << endl;
cout << "Valor por defecto: " << (columna->def ?
columna->def : "NULL") << endl;
}
cout << endl;
// Información sobre columnas usando mysql_fetch_fields:
cout << endl << "Informacion sobre columnas:" << endl;
columna = mysql_fetch_fields(res);
for(l = 0; l < j; l++) {
cout << "Nombre: " << columna[l].name << endl;
cout << "Longitud: " << columna[l].length << endl;
cout << "Valor por defecto: " << (columna[l].def ?
columna[l].def : "NULL") << endl;
}
cout << endl;
// Información sobre columnas n, usando
mysql_fetch_field_direct:
cout << endl << "Informacion sobre columna 1:" << endl;
columna = mysql_fetch_field_direct(res, 1);
cout << "Nombre: " << columna->name << endl;
cout << "Longitud: " << columna->length << endl;
cout << "Valor por defecto: " << (columna->def ? columna->def : "NULL") << endl;
cout << endl;
// Leer registro a registro y mostrar:
l=1;
for(l = 0; l < i; l++) {
row = mysql_fetch_row(res);
lon = mysql_fetch_lengths(res);
cout << "Registro no. " << l+1 << endl;
// Mostrar cada campo y su longitud:
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]);
cout << " longitud: " << lon[k] << endl;
}
}
cout << endl;
// Mostrar sólo 3ª fila:
mysql_data_seek(res, 2);
row = mysql_fetch_row(res);
cout << "Tercera fila" << endl;
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
// Almacenar posición de la fila actual (la 4ª):
pos = mysql_row_tell(res);
// Lectura de filas hasta el final:
while(mysql_fetch_row(res));
// Recuperar la posición guardada:
mysql_row_seek(res, pos);
row = mysql_fetch_row(res);
cout << "Cuarta fila" << endl;
for(k = 0 ; k < j ; k++) {
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
cout << endl;
// Liberar el resultado de la consulta:
mysql_free_result(res);
}
// El mismo proceso usando mysql_use_result:
// Hacer una consulta con el comando "SELECT * FROM gente":
if(mysql_query(myData, "SELECT * FROM cuenta")) {
// Error al realizar la consulta:
cout << "ERROR: " << mysql_error(myData) << endl;
mysql_close(myData);
rewind(stdin);
getchar();
return 2;
}
// Mostrar todas las filas:
if((res = mysql_use_result(myData))) {
j = (int) mysql_num_fields(res);
while(row = mysql_fetch_row(res)) {
for(k = 0 ; k < j ; k++)
cout << ((row[k]==NULL) ? "NULL" : row[k]) << endl;
}
// Liberar el resultado de la consulta:
mysql_free_result(res);
}
// Cerrar la conexión
mysql_close(myData);
// Esperar a que se pulse una tecla y salir.
rewind(stdin);
getchar();
return 0;
}
Bueno los errores que se presentan son:
linker error undefined reference to mysql_init@4'
linker error undefined reference to mysql_real_connect@32'
linker error undefined reference to mysql_error@4'
linker error undefined reference to mysql_close@4'
linker error undefined reference to mysql_select@4'
tengo instalada la libreria libmysql pero igual no me funciona
Valora esta pregunta


0