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
ho segnalato le linee incriminate con un commento (delete MySQLObject;//errore)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; }
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è?


Rispondi quotando