Uso dell'istruzione mysql_query()

di il
7 risposte

Uso dell'istruzione mysql_query()

Innanzitutto salve a tutti!Sono un nuovo arrivato e vorrei sottoporre il seguente problema:
devo realizzare una applicazione in C++ che si interfaccia con un DB Mysql.
Il collegamento è a posto (funziona tutto!), come anche l'inserimento dati nella tabella.
Tuttavia voglio che i valori da inserire provengano dalla selezione dell'utente a terminale: devo quindi passare il valore di 3 variabili all'istruzione mysql_query(conn, "INSERT INTO tabella VALUES (valore1,valore2, valore3)") dove valore 1,2 e 3 sono rispettivamente tre variabili.
Come posso fare?
Grazie a tutti...attendo fiducioso il vostro aiuto!!

7 Risposte

  • Re: Uso dell'istruzione mysql_query()

    
    int mysql_query(MYSQL *mysql, const char *stmt_str)
    .....
    string stmt = "INSERT INTO tabella VALUES (";
    stringstream ss;
    ss << valore1 << "," << valore2 << "," << valore3;
    stmt += ss.str() + ")";
    mysql_query(conn,stmt.c_str());
    
  • Re: Uso dell'istruzione mysql_query()

    Ti ringrazio per l'aiuto...ho provato ad inserire il tuo codice (cambiando le variabili) ma quando vado a compilare mi restituisce il seguente errore:

    In file included from /usr/include/c++/4.6/sstream:580:0,
    from main.cpp:14:
    /usr/include/c++/4.6/bits/sstream.tcc: In member function ‘virtual std::basic_stringbuf<_CharT, _Traits, _Alloc>::int_type std::basic_stringbuf<_CharT, _Traits, _Alloc>::overflow(std::basic_stringbuf<_CharT, _Traits, _Alloc>::int_type)’:
    /usr/include/c++/4.6/bits/sstream.tcc:112:39: error: expected unqualified-id before ‘(’ token
    /usr/include/c++/4.6/bits/sstream.tcc:114:35: error: expected unqualified-id before ‘(’ token

    ho provato anche a specificare il percorso della direttiva sstream, ma nulla...
    in che cosa sbaglio?
  • Re: Uso dell'istruzione mysql_query()

    Problema risolto...non avevo incluso la direttiva giusta per il preprocessore.
    Tuttavia ancora non funziona...in pratica il compilatore mi dice che il paramentro da passare a mysql_query(conn,"INSERT INTO...") deve essere di tipo const char.
    Invece nella procedura io gli passo una variabile stringstream, e il compilatore segnala l'errore.
    Come posso fare?
  • Re: Uso dell'istruzione mysql_query()

    Non hai visto bene. Nel mio esempio li passi un const char * che è il valore di ritorno della funzione c_str() della classe std::string.
  • Re: Uso dell'istruzione mysql_query()

    Ora mi dà un errore di segmentazione:
    dove ho sbagliato?

    string stmt, cognome, nome, matr;
    stringstream ss;
    cout<<"inserisci il tuo cognome: ";
    cin>>cognome;
    cout<<"inserisci il tuo nome: ";
    cin>>nome;
    cout<<"inserisci la tua matricola: ";
    cin>>matr;
    stmt = "INSERT INTO Dipendenti VALUES (";
    ss <<cognome<<","<<nome<<","<<matr<<")";
    stmt += ss.str()+")";
    mysql_query(conn,stmt.c_str());

    non riesco proprio a capire dove stia l'errore!!!
    Datemi un consiglio...
  • Re: Uso dell'istruzione mysql_query()

    Cosa ti dice il debugger? e lo stack delle chiamate dove si ferma?
  • Re: Uso dell'istruzione mysql_query()

    Ok...ora la query viene costruita regolarmente.
    Però adesso non scrive nulla nella tabella...eppure la connesione al db avviene senza problemi.
    i campi della tabella contengono dati di tipo text e, con la query gli passo delle stringhe.
    Sbaglio?
Devi accedere o registrarti per scrivere nel forum
7 risposte