Ciao a tutti
mi sto approcciando all'uso di C e sqlite, ma ho già dei problemi.
Come prima operazione volevo provare solo ad aprire una connessione con un database sqlite e poi chiuderlo. il programma è questo
Le query che dovrò eseguire potete anche non guardarle tanto per ora sono ininfluenti.codice:#include <stdio.h> #include <sqlite3.h> //using namespace std; int main() { sqlite3* conn; int i,c,sel,id; char app[20]="impegno"; char delete[80]; char read[25]="SELECT * FROM Agenda"; char insert[130]; double created; if (sqlite3_open("prova.db", &conn) == SQLITE_OK) { printf("Database aperto correttamente \n"); } else { printf("Errore durante l'apertura \n"); } created=234567.542; printf("Quale operazione vuoi eseguire? \n"); printf("1-Inserisci nuovi impegni \n"); printf("2-Leggi gli impegni \n"); printf("3-Cancella impegni \n"); scanf("%d",&sel); //esecuzione delle query if(sel==1) { c=sprintf(insert,"INSERT INTO Agenda Values( %d,%s,%f,1,3)",id,app,created); printf("%s \n",insert); } else if(sel==2) printf("%s",read); else { scanf("%d",&i); c=sprintf(delete,"DELETE FROM Agenda Where id = %d",i); printf("%s",delete); } sqlite3_close(conn); }
Sono andato a compilare il programma con il comando
gcc -o test provasql.c
e mi da come errore:
undefined reference to 'sqlite3_open()'
undefined reference to 'sqlite3_close'
collect2: Id returned 1 exit status
al chè ho pensato che forse dovevo linkare direttamente sqlite3.h quindi siccome è presente sia nella cartella in cui sto lavorando sia in /usr/include ho mandato in esecuzione in questo modo
gcc -o test prova.c -lsqlite3.h
ma mi da il seguente errore:
/usr/bin/ld: cannot find sqlite3.h
collect2: Id returned 1 exit status
se a -lsqlite3.h sostituisco tutto il percorso (/usr/include/sqlite3.h)
mi da lo stesso errore
sbaglio qualcosa nella compilazione??
oppure è sbagliato qualcosa nel codice??

Rispondi quotando