Salve a tutti ho un problema nella gestione di una connessione tra un programma in c++ e MYSQL la connessione e selezione funzionano bene ma ho un problema quando cerco di distruggere la struttura MYSQL. HO questo codice
codice:
#include <mysql/mysql++>
#include <iostream>
int main()
{
MYSQL* MySQLObject; //crea un oggetto MYSQL
MYSQL_ROW Row; //crea un oggetto rs
MYSQL_RES *res; // crea un resource
MYSQL_FIELD *fd; //crea un campo MYSQL
char SQL_Query[] = "SELECT name,class,level FROM `user` WHERE 1;";
if(!(MySQLObject = mysql_init(0)))
{
cerr << "Impossibile inizializzare MySQL" << endl;
delete MySQLObject;//errore
exit(1);
}
if(!mysql_real_connect(MySQLObject, "127.0.0.1", "root", "xxx", "utenti", 3306, NULL, 0))
{
cerr << "Impossibile contattare il server MySQL";
mysql_close(MySQLObject);
delete MySQLObject;// errore
exit(1);
}
if(!mysql_query(MySQLObject, SQL_Query))
{
res = mysql_store_result(MySQLObject);//acquire the record resource from the returned query results
unsigned int i = static_cast<unsigned int>(mysql_num_rows(res)); // numero di righe ottenute
for(int x = 0; fd = mysql_fetch_field(res); x++)//ottiene il nome dei campi della tabella
{
cout << fd->name << "\t\t";
}
cout << endl;
while(Row = mysql_fetch_row(res))//cicla finche ci sono righe valide
{
int j = mysql_num_fields(res); // numero di campi della riga
for(int k = 0; k < j; k++)
{
if((Row[k] == NULL) || (!strlen(Row[k]))) cout << "NULL" << "\t\t ";
cout << Row[k] << "\t\t";
}
}
mysql_free_result(res); //libero la memoria occupata da un resource
}
else
{
cerr << " Impossibile eseguire la query specificata. Perfavore controlla la sintassi e la semantica.\n";
cerr << " Possibili cause: la query non e' valida, il database o la tabella non esistes\n";
cerr << " all'IP address/port specificato." << endl;
mysql_close(MySQLObject);
exit(1);
}
mysql_close(MySQLObject);//chiudo la connessione
delete MySQLObject;//errore
return 0;
}
ho segnalato le linee incriminate con un commento (delete MySQLObject;//errore)
Il problema non sorge in compilazione ma in esecuzione:
da quello che vedo pare esserci un problema con un assert in una libreria la domanda è perchè?