C e mysql
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 8 di 8

Discussione: C e mysql

Cambio titolo
  1. #1
    Utente L'avatar di Metal2001
    Registrato il
    10-02
    Messaggi
    8.720

    C e mysql

    Devo fare un programma in C che prende come parametro una stringa,interroga il database Mysql e mi restituisce la tupla contenete quel valore

    Questa versione è con valori numerici (del tipo "del tipo restituisci l'impiegato con ID=X,dove X è un numero e lo passo cosi: "./eseguibile X")
    Se al posto di un numero dovessi inserire dei caratteri le virgolette "" mi creano dei problemi perchè non riesco ad inserirle nella query sql, come posso fare?
    Codice:
    #include <mysql.h>
    #include <stdio.h>
    #include <stdlib.h>
    
        main(int argc,char *argv[]) {
           MYSQL *conn;
           MYSQL_RES *res;
           MYSQL_ROW row;
           char  *server = "localhost";
           char  *user = "root";
           char  *password = "xxx";
           char  *database = "DB1";
        char sql[80]; 
        strcpy(sql,"SELECT * FROM PROVA WHERE ID=");    
        strcat(sql,argv[1]);
        conn = mysql_init(NULL);
           
           if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
    {
              fprintf(stderr, "%s\n", mysql_error(conn));
              exit(0);
           }
          
               if (mysql_query(conn, sql)) {
              fprintf(stderr, "%s\n", mysql_error(conn));
             exit(0);
           }
           res = mysql_use_result(conn);
           
           while ((row = mysql_fetch_row(res)) != NULL)
              printf("%s %s %s %s\n", row[0], row[1], row[2], row[3]);
           
           mysql_free_result(res);
           mysql_close(conn);
        }
    _

  2. #2
    Programmer L'avatar di squallwii
    Registrato il
    01-09
    Messaggi
    18.003
    Citazione Metal2001 Visualizza Messaggio
    Devo fare un programma in C che prende come parametro una stringa,interroga il database Mysql e mi restituisce la tupla contenete quel valore

    Questa versione è con valori numerici (del tipo "del tipo restituisci l'impiegato con ID=X,dove X è un numero e lo passo cosi: "./eseguibile X")
    Se al posto di un numero dovessi inserire dei caratteri le virgolette "" mi creano dei problemi perchè non riesco ad inserirle nella query sql, come posso fare?
    Codice:
    #include <mysql.h>
    #include <stdio.h>
    #include <stdlib.h>
    
        main(int argc,char *argv[]) {
           MYSQL *conn;
           MYSQL_RES *res;
           MYSQL_ROW row;
           char  *server = "localhost";
           char  *user = "root";
           char  *password = "xxx";
           char  *database = "DB1";
        char sql[80]; 
        strcpy(sql,"SELECT * FROM PROVA WHERE ID=");    
        strcat(sql,argv[1]);
        conn = mysql_init(NULL);
           
           if (!mysql_real_connect(conn, server,user, password, database, 0, NULL, 0))
    {
              fprintf(stderr, "%s\n", mysql_error(conn));
              exit(0);
           }
          
               if (mysql_query(conn, sql)) {
              fprintf(stderr, "%s\n", mysql_error(conn));
             exit(0);
           }
           res = mysql_use_result(conn);
           
           while ((row = mysql_fetch_row(res)) != NULL)
              printf("%s %s %s %s\n", row[0], row[1], row[2], row[3]);
           
           mysql_free_result(res);
           mysql_close(conn);
        }
    In mysql in genere si usano ' al posto di ".

  3. #3
    Utente L'avatar di Metal2001
    Registrato il
    10-02
    Messaggi
    8.720
    quelle " sono del codice C
    in questo codice passo un valora numerico e funziona

    se volessi passare una stringa, cambio l'attributo nella query e quando eseguo il programma mi spunta questo errore:
    Unknown column 'Antonio' in 'where clause'
    perch&#232; non riesco a passare le virgolette dentro la query e mi cerca un attributo di nome Antonio quando dovrebbe cercare una tupla con il campo Antonio nell'attributo nome, non so se mi sono spiegato
    _

  4. #4
    Programmer L'avatar di squallwii
    Registrato il
    01-09
    Messaggi
    18.003
    Forse non mi son spiegato o non ho capito io.
    Comunque: tu vuoi fare una query del tipo: select * from provawhere nome='antonio';?

    Bene, come vedi il nome deve essere circondato dagli apici ', se metti il " ovviamente il codice crolla e ti cerca una tabella. In pratica alla query devi mettere un apice ' prima e dopo il nome che vuoi cercare (e che passi da linea di comando o come vuoi).

  5. #5
    Linux User # 477930 L'avatar di Metflar
    Registrato il
    09-06
    Località
    Anagni
    Messaggi
    2.353
    Citazione Metal2001 Visualizza Messaggio
    quelle " sono del codice C
    in questo codice passo un valora numerico e funziona

    se volessi passare una stringa, cambio l'attributo nella query e quando eseguo il programma mi spunta questo errore:
    Unknown column 'Antonio' in 'where clause'
    perchè non riesco a passare le virgolette dentro la query e mi cerca un attributo di nome Antonio quando dovrebbe cercare una tupla con il campo Antonio nell'attributo nome, non so se mi sono spiegato
    usa la funzione sprintf

    conoscenze: C\C++, Java, PHP,Python

  6. #6
    Utente L'avatar di Metal2001
    Registrato il
    10-02
    Messaggi
    8.720
    Ho provato a eseguire il programma mettendo la veriabile con singolo apice ', con doppio apice " e senza, in tutti e 3 i casi non funziona

    la query corretta è select* from tablella where attributo="valore";

    Citazione Metflar Visualizza Messaggio
    usa la funzione sprintf
    come funziona?
    _

  7. #7
    Linux User # 477930 L'avatar di Metflar
    Registrato il
    09-06
    Località
    Anagni
    Messaggi
    2.353
    Citazione Metal2001 Visualizza Messaggio
    Ho provato a eseguire il programma mettendo la veriabile con singolo apice ', con doppio apice " e senza, in tutti e 3 i casi non funziona

    la query corretta &#232; select* from tablella where attributo="valore";


    come funziona?
    Codice:
    sprintf(buffer,"select * from tabella where attributo='&#37;s'",valore);
    dove buffer &#232; la nuova stringa

    conoscenze: C\C++, Java, PHP,Python

  8. #8
    Utente L'avatar di Metal2001
    Registrato il
    10-02
    Messaggi
    8.720
    ok, risolto
    Grazie
    _

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •