Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c++ & mysql] errore assert in distruzione

    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è?

  2. #2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.