Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61

    Problema c++ con Select in MySql

    Salve,
    ho un piccolo problema con l'utilizzo di c++ e MySql. In breve, volendo inserire nella SELECT dopo la clausola WHERE una variabile, nell'esempio 'A' non riesco a fargliela riconoscere e, pertanto, non riesco atrovare solo quei records che di volta in volta 'A' potra' assumere nel programma che dovro' sviluppare. lanciando il programma infatti non visualizzo i dati del primo record ponendo 'A' uguale a 45 vi posto il codice
    codice:
     #include <windows.h>
    #include <iostream>
    #include <mysql/mysql.h>
    #include <string.h>
    using namespace std;
    
    int main()
    {
        MYSQL *sock;  
        sock = mysql_init(0); 
        if (!sock) {  
             cout << "Errore durante l'inizializzazione dell'oggetto MYSQL " << endl << mysql_error(sock) << endl;
             system("PAUSE");
             return -1;
        }
        //Parametri di connessione
        char *host = "localhost";  //Hostname
        char *user = "root";         //user
        char *pass = "prova";             //password
        char *db = "demo";          //database
        if (!mysql_real_connect(sock, host, user, pass, db, 0, NULL,  0)){
             cout << "Errore durante la connessione MYSQL " << endl << mysql_error(sock) << endl;
             system("PAUSE");
             return -1;
        }
        int A;
        A=45;
        if (mysql_query(sock,"select idcliente,nome,cognome  from clienti where idcliente = 'A' "))
        {
                 cout << "Errore durante l'esecuzione della query " << endl << mysql_error(sock) << endl;
                 system("PAUSE");
                 return -1;
        }
    
        MYSQL_RES *result;
        result = mysql_store_result(sock);
        if (result)  // Se ci sono righe
        {
            MYSQL_ROW row;
            
            // retrieve rows, then call mysql_free_result(result)
            while ((row = mysql_fetch_row(result))){
                  cout << " IDCLIENTE:" << row[0];
                  cout << " NOME:" << row[1];
                  cout << " COGNOME:" << row[2]<<endl;
            }
            mysql_free_result(result);
        }
        int codice;
        char cognome[50];
        char nome[50];
        char sql[255];
        cout<<endl << "INSERIRE IL CODICE CLIENTE :" ;
        cin>>codice;
        cout<<endl << "INSERIRE IL COGNOME CLIENTE :" ;
        cin>>cognome;
        cout<<endl << "INSERIRE IL NOME CLIENTE :" ;
        cin>>nome;
        sprintf(sql,"INSERT INTO clienti VALUES (%d,\'%s\',\'%s\')",codice,cognome,nome);
        cout<<sql;
        
        //Eseguo la query di comando con l'istruzione  mysql_query
        mysql_query(sock,sql);
        if (mysql_affected_rows(sock) != 1) {
             cout << "Errore durante l'esecuzione della query " << endl << mysql_error(sock) << endl;
             system("PAUSE");
             return -1;
        }
        system("PAUSE");
        mysql_close(sock);
        return EXIT_SUCCESS;
    }
    Grato per i suggerimenti resto in attesa della soluzione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Problema c++ con Select in MySql

    Originariamente inviato da slyper
    ho un piccolo problema con l'utilizzo di c++ e MySql. In breve, volendo inserire nella SELECT dopo la clausola WHERE una variabile, nell'esempio 'A' non riesco a fargliela riconoscere e, pertanto, non riesco atrovare solo quei records che di volta in volta 'A' potra' assumere nel programma che dovro' sviluppare. lanciando il programma infatti non visualizzo i dati del primo record ponendo 'A' uguale a 45
    Ho letto più volte ma non ho capito molto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    Scusate la mia poco chiarezza ma in sintesi se nell'istruzione seguente:

    if (mysql_query(sock,"select idcliente,nome,cognome from clienti where idcliente = 'A' "))

    pongo al posto di 'A' il numero 45 trovo il record che mi interessa, altrimenti non riesco a trovare alcun record per i valori che 'A' assumerà nel programma.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da slyper
    pongo al posto di 'A' il numero 45 trovo il record che mi interessa
    E questo si capisce ...

    altrimenti non riesco a trovare alcun record per i valori che 'A' assumerà nel programma.
    Questo no. La frase "per i valori che 'A' assumerà nel programma" non ha senso.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    per spiegarmi ancora, e meglio, ho due tabelle su db MySql e volendo confrontare i records della prima con la seconda mi veniva pratico incrementare 'A' e, successivamente 'B' della seconda tabella. Pertanto cercavo di capire se 'era una soluzione affinche la select riconoscesse il valore di 'A' . Con questo evitarei di infilare tutti i records in un vettore dopo una procedura con WHILE per poi riconfrontarli.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da slyper
    per spiegarmi ancora, e meglio, ho due tabelle su db MySql e volendo confrontare i records della prima con la seconda mi veniva pratico incrementare 'A' e, successivamente 'B' della seconda tabella.
    Ma cosa sono 'A' e 'B' ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    'A' e 'B' sono due variabili che assumeranno i valori degli indici delle due tabelle di MySql.
    In sintesi si incrementeranno a partire dal valore 1 permettendo il confronto tra i valori dei records delle due tabelle.Premetto che il programma funzionante è già stato sviluppato in php ma purtroppo crasha dopo 3000 records si 40000. Ho provato a intervenire il php.ini aumentando il max_execution_time ma invano. Pertanto volevo provare a realizzarlo in c++ ma a causa del problema che nella select non interpreta il valore di 'A' o 'B' trovo difficolta' ad andare avanti. Sono disponibile a qualsiasi soluzione se esiste grazie.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma 'A' e 'B' sono costanti char, non sono variabili!
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di slyper
    Registrato dal
    Jul 2011
    Messaggi
    61
    puoi darmi una soluzione???

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Prima si deve comprendere il problema!

    Quello che ho capito è che vuoi usare delle variabili, quindi

    int a, b;

    poi devi usare la sprintf per formare una stringa, ovvero

    codice:
    char qry[100];
    
    sprintf("select idcliente,nome,cognome from clienti where idcliente = '%d'", a); 
    if (mysql_query(sock, qry))
    se idcliente è alfanumerico, altrimenti senza ' ' ovvero

    codice:
    char qry[100];
    
    sprintf("select idcliente,nome,cognome from clienti where idcliente = %d", a); 
    if (mysql_query(sock, qry))
    Oltre questo, non vado ...
    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 © 2024 vBulletin Solutions, Inc. All rights reserved.