[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