[C con Clase] Problema con MySQL
Kyosuke Kasuga
kyosuke_cl en yahoo.es
Mar Ene 15 17:21:17 CET 2008
Hi!!!, ¿k tal?, bueno tengo una consulta para ustedes, estoy haciendo un programa que usa MySQL y no me conecta a la base de datos, el programa me compila perfecto y tambien me crea el ejecutable sin problemas, cree el usuario "popopo" para la base de datos "restorant" pero cuando uso mysql_real_connect() me manda un error de que no se pudo conectar, cree el usuario en MySQL de la siguiente forma :
GRANT ALL ON restorant.* to popopo IDENTIFIED BY 'hikaru87';
Me la crea perfectamente, sin ningun error, pero cuando llamo a la base de datos con el siguiente codigo no me funciona:
CreaBaseDatos(hwnd, NULL, "popopo", "hikaru87");
Uso la version 6.0 de MySQL con wxDev-C++ 6.10.2
El codigo que llama es el siguiente :
#include <string>
#include <windows.h>
#include <commctrl.h>
#include <mysql/mysql.h>
MYSQL *MisDatos;
MYSQL_RES Respuesta;
bool ExisteTabla(MYSQL *, char *, char *);
bool ExisteTabla(MYSQL *MiDato, char *mibase, char *mitabla)
{
char * consulta;
char *plantilla = "SHOW TABLES FROM %s LIKE \'%s\'";
MYSQL_RES *res;
bool valorret = true;
consulta = new char[strlen(mibase)+ strlen(mitabla)+ strlen(plantilla)-1];
sprintf(consulta, plantilla, mibase, mitabla);
if (!mysql_query(MiDato, consulta)){
if ((res = mysql_store_result(MiDato))){
if (!mysql_num_rows(res)) valorret = false;
mysql_free_result(res);
}
}
delete[] consulta;
return valorret;
}
bool CreaBaseDatos(HWND hwnd, char *maquina, char *usuario, char *clave)
{
char Plantilla[30];
if (!(MisDatos = mysql_init(0))){
return false;
}
if (!mysql_real_connect(MisDatos, maquina, usuario, clave, "restorant", MYSQL_PORT, NULL, 0)){
sprintf(Plantilla, "Error : %05d", mysql_error(MisDatos));
MessageBox (hwnd, Plantilla, "Chanchichó", MB_ICONEXCLAMATION);
mysql_close(MisDatos);
return false;
}
/* Se empieza a crear la base de datos*/
mysql_query(MisDatos, "CREATE DATABASE Restorant");
mysql_query(MisDatos, "CREATE TABLE Restorant.Usuarios ("
"rut VARCHAR(15), "
"nombre VARCHAR(30), "
"apellidos VARCHAR(30), "
"direccion VARCHAR(50), "
"fono VARCHAR(15), "
"email VARCHAR(40), "
"cargo VARCHAR(30), "
"login VARCHAR(20), "
"clave VARCHAR(15), "
"nacimiento DATE, "
"PRIMARY KEY (rut)) "
"ENGINE=InnoDB");
if (!ExisteTabla(MisDatos, "Restorant", "Usuarios")) return false;
mysql_query(MisDatos, "CREATE TABLE Restorant.Producto ("
"codigo VARCHAR(15), "
"descripcion VARCHAR(50), "
"tipo VARCHAR(20), "
"cantidad INT NOT NULL DEFAULT 0, "
"Pesolitro INT NOT NULL DEFAULT 0, "
"fingreso DATE, "
"fvencimiento DATE, "
"pcosto INT NOT NULL DEFAULT 0, "
"PRIMARY KEY (codigo)) "
"ENGINE=InnoDB");
mysql_query(MisDatos, "CREATE TABLE Restorant.Menu ("
"codigo VARCHAR(15), "
"descripcion VARCHAR(50), "
"precioneto INT NOT NULL DEFAULT 0, "
"PRIMARY KEY (codigo)) "
"ENGINE=InnoDB");
mysql_query(MisDatos, "CREATE TABLE Restorant.Receta ("
"codigomenu VARCHAR(15), "
"codigoingrediente VARCHAR(15), "
"Descripcion VARCHAR(30) "
"FOREIGN KEY (codigomenu) REFERENCES Menu (codigo) "
"ON DELETE CASCADE ON UPDATE CASCADE) "
"ENGINE=InnoDB");
mysql_query(MisDatos, "CREATE TABLE Restorant.Ingrediente ("
"codigoingrediente VARCHAR(15), "
"codigoproducto VARCHAR(15), "
"cantidad INT NOT NULL DEFAULT 0, "
"pesolitro INT NOT NULL DEFAULT 0, "
"PRIMARY KEY (codigoingrediente), "
"FOREIGN KEY (codigoproducto) REFERENCES Producto (codigo) "
"ON DELETE CASCADE ON UPDATE CASCADE) "
"ENGINE=InnoDB");
mysql_query(MisDatos, "CREATE TABLE Restorant.Boleta ("
"nroboleta VARCHAR(15), "
"femision DATE, "
"iva INT NOT NULL DEFAULT 19, "
"montototal INT NOT NULL DEFAULT 0, "
"descuento INT NOT NULL DEFAULT 0, "
"tipodescuento VARCHAR(15), "
"PRIMARY KEY (nroboleta), "
"FOREIGN KEY (codigoproducto) REFERENCES Producto (codigo) "
"ON DELETE CASCADE ON UPDATE CASCADE) "
"ENGINE=InnoDB");
mysql_query(MisDatos, "CREATE TABLE Restorant.Detalle ("
"nroboleta VARCHAR(15), "
"codigomenu VARCHAR(15), "
"FOREIGN KEY (nroboleta) REFERENCES Boleta (nroboleta) "
"ON DELETE CASCADE ON UPDATE CASCADE) "
"ENGINE=InnoDB");
mysql_close(MisDatos);
return true;
}
La verdad ya trate varias formas de conectarme a MySQL pero nada me funciona, no se la verdad donde está mi error, cualkier guia o ayuda lo agradeceré mucho.
Salu2.
Entre más numerosos somos, más cerca estamos de nuestra propia extinción.
http://bisbirudolfo.blogspot.com/
---------------------------------
Web Revelación Yahoo! 2007:
Premio Favorita del Público - ¡Vota tu preferida!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080115/48c870c8/attachment.html>
Más información sobre la lista de distribución Cconclase