Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    36

    mysql e c++...segmantation fault

    salve.... ho creato questo programmino per leggere il contenuto di una tabella... ma alla fine mi da questo output...
    " inserisci username :*****

    inserisci password :*****

    inserisci il nome del database al quale connettersi : prova

    connesso al database [prova]

    leggere il contenuto della tabella?si
    Segmentation fault"

    e questo è il codice:

    codice:
    #include <statement.h>
    #include <prepared_statement.h>
    #include <exception.h>
    #include <cppconn/resultset_metadata.h>
    
    using namespace std;
    sql::ResultSet *res;
    sql::PreparedStatement *stmt;
    sql::ResultSetMetaData  *res_md;
    
    int main() 
    {
    MYSQL _mysql;
    
    mysql_init( &_mysql );
    
    string host = "localhost";
    string user;
    string password;
    string db;
    
    bool connected ;
    cout<<"inserisci username :";
    getline(cin, user);
    
    cout<<endl;
    
    cout<<"inserisci password :";
    getline(cin,password);
    
    cout<<endl;
    
    cout<<"inserisci il nome del database al quale connettersi : ";
    getline(cin,db);
    
    cout<<endl;
    
    MYSQL *my = mysql_real_connect( &_mysql, host.c_str(), user.c_str(),password.c_str(),db.c_str(),0,0,0);
    
    if (my){ connected = true;
    cout<< "connesso al database ["<<db<<"]";
    }
    else {
    connected = false;
    string exc = "Errore di connessione a mysql : " + string( mysql_error( &_mysql ) ) + string( "\n" );
    cout<< exc;
    
    }
    string risposta;
    cout<<"leggere il contenuto della tabella?";
    getline(cin,risposta);
    
    if(risposta == "si"){
    
    string query = "select * from persone;";
    res = stmt-> executeQuery(query);
    res_md = res->getMetaData();
    
    cout<<res->rowsCount();
    int i;
    for (i =1;i < res_md-> getColumnCount();i++)
    {
        cout<<res_md -> getColumnLabel(i);
    }
    }
     else
     { 
     
    mysql_close ( & _mysql );
    }
    return (0);
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'oggetto puntato da stmt quando lo hai creato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    36
    parli dell'executeQuery(query)? quello dovrebbe essere incluso nell'header...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Parlo di questo

    sql::PreparedStatement*stmt;

    che usi in seguito senza averlo mai inizializzato. E un puntatore non inizializzato causa un seg fault
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    36
    e come dovrei scrivere?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    36
    l'ho modificato scrivendo cosi:
    stmt = con->prepareStatement("select * from persone;");
    res = stmt-> executeQuery();
    res_md = res->getMetaData();

    cout<<res->rowsCount();
    int i;
    for (i =1;i < res_md-> getColumnCount();i++)
    {
    cout<<res_md -> getColumnLabel(i);
    }
    }
    else
    {

    mysql_close ( & _mysql );
    }
    return (0);
    }
    nemmeno va...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    "Nemmeno va" che vuol dire? Hai ancora il segmentation fault per cui hai aperto questo thread? O hai altri problemi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    36
    è sempre riferito al segmentation fault...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In quale linea? Hai eseguito passo passo in debugging?

    P.S. Usa i tag CODE ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.