[c] connessione a DB MySQL

di il
11 risposte

[c] connessione a DB MySQL

Buonasera a tutti.

Sto invano tentando di connettermi ad un db mysql da un programma in c.

ho scritto il seguente codice :

#include <stdio.h>
#include <stdlib.h>
//#include <my_global.h>
#include <mysql.h>
//#include <mysql/mysql.h>



const char* host = "localhost"; // host di connessione
const char* database = "primeprove";  // database di connessione
const char* db_user = "root"; // nome utente per la connessione
const char* db_pass = ""; // password non cifrata

int main ()
{
        MYSQL mysql;
        MYSQL_ROW row;        // la riga
        MYSQL_RES* result;
        MYSQL_FIELD* field;     // il campo ritornato

        char* query = "SELECT * FROM login;";

        int i = 0, j = 0, n_rows = 0;

        // restituisce NULL se non avviene con successo
        if (! mysql_init (&mysql)) {
              printf ("Errore nella allocazione di memoria.n");
                exit (EXIT_FAILURE);
        }

       if (! mysql_real_connect (&mysql, host, db_user, db_pass, "",
                        0, NULL, 0)) {
                printf ("Errore nella connessione.n");
                goto error;
        }

        // restituisce zero se avviene con successo
        if (mysql_select_db (&mysql, database)) {
                printf ("Errore nella selezione del database.n");
                goto error;
        }

        printf ("Connessione avvenuta.n");


        // restituisce zero se avviene con successo
        if (mysql_select_db (&mysql, database)) {
                printf ("Errore nella selezione del database.n");
                goto error;
        }

        // esegue la query
        if (mysql_query (&mysql, query)) {
                printf("Errore nella query.n");
                goto error;
        }

        result = mysql_store_result (&mysql);

        n_rows = mysql_num_rows (result);

        for (j = 0; j < n_rows; j++) {
                i = 0;
                mysql_field_seek (result, 0);           // sposta a inizio riga
                row = mysql_fetch_row (result);      // preleva i dati della riga
                while ((field = mysql_fetch_field (result))) {
                        printf ("%s: ", field->name);     // visualizza il campo
                        printf ("%sn", row[i++]);          // visualizza il dato del campo
                }

                printf ("n");
        }



       mysql_free_result (result);

error:
        mysql_close (&mysql);   // chiusura del database

        exit (EXIT_SUCCESS);
}

il quale mi restituisce i seguenti errori :

obj\Debug\main.o||In function `main':|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|28|undefined reference to `mysql_init@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|33|undefined reference to `mysql_real_connect@32'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|40|undefined reference to `mysql_select_db@8'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|49|undefined reference to `mysql_select_db@8'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|55|undefined reference to `mysql_query@8'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|60|undefined reference to `mysql_store_result@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|62|undefined reference to `mysql_num_rows@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|66|undefined reference to `mysql_field_seek@8'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|67|undefined reference to `mysql_fetch_row@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|68|undefined reference to `mysql_fetch_field@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|78|undefined reference to `mysql_free_result@4'|
C:\Users\lorenzo\Documents\Università 2013\Progetti C\PrimaProvaconnessioneMysql\main.c|81|undefined reference to `mysql_close@4'|
||=== Build finished: 12 errors, 0 warnings (0 minutes, 3 seconds) ===|


per completezza aggiungo che uso codeblocks e lavoro su windows

Grazie a tutti

11 Risposte

  • Re: [c] connessione a DB MySQL

    Sembra che manchi un riferimento alla libreria di mysql
  • Re: [c] connessione a DB MySQL

    Come posso risolvere?
  • Re: [c] connessione a DB MySQL

    Devi dire al compilatore dove si trova la libreria:
    project->build options->linker setting(è una tab)-> pulsante in basso a sinistra add
    ora cercati la libreria in base a dove l'hai installata dovrebbe chiamarsi "libmysqlclient.a"
  • Re: [c] connessione a DB MySQL

    Grazie per la risposta.

    Oggi pomeriggio provo e vi faccio sapere
  • Re: [c] connessione a DB MySQL

    No niente stesso errore
  • Re: [c] connessione a DB MySQL

    Ma tu cosa hai fatto in dettaglio?
  • Re: [c] connessione a DB MySQL

    Quello suggeritomi da vbextreme...
  • Re: [c] connessione a DB MySQL

    Hai usato la libreria

    libmysql.a

    ?
  • Re: [c] connessione a DB MySQL

    .dll e .pdb e .lib
  • Re: [c] connessione a DB MySQL

    Che vuoi dire? Cerca di essere più chiaro.
  • Re: [c] connessione a DB MySQL

    Allora incrocia le dita e fai questo primo tentativo:
    1) togli dal linker tutto quello che ci hai messo.
    2)fai una copia libmysql.dll in system32
    3)nella cartella dove hai es: "\MySQL\MySQL\libmysql.dll" rinomini in "libmysql.a"
    4)metti nel linker quella e prova a compilare.
    Se non va torna a rinominarla .dll
    Attenzione che il rename di windows non ti permette di cambiare estensione che diventerebbe libmysql.a.dll,lo puoi fare direttamente da codeblocks in filemanager.

    Se non èandata a buon fine allora bisogna costruirsela ti posto il link su come si fa.
Devi accedere o registrarti per scrivere nel forum
11 risposte