Ho ampliato il codice ma c'è qualcosa che non va...
allora ho iniziato provando con un database di prova chiamato prova.db
questo è strutturato in questo modo
Nome|id
l'ho popolato con 2 elementi
Bobby 1
Ciccio 2
ho compilato ed eseguito il seguente codice
codice:
#include <stdio.h>
#include <sqlite3.h>
int main()
{
sqlite3* conn;
sqlite3_stmt* result;
char *zErrMsg = 0;
int i,k,c,sel,ad,id;
char app[10]="Mario";
char delete[80];
char read[25]="SELECT * FROM test";
char insert[110];
char *queries[4];
float created;
ad=sqlite3_open("prova.db", &conn);
if (ad)
{
printf("Errore durante l'apertura \n");
sqlite3_close(conn);
} else {
printf("Connessione riuscita \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)
{
id=3;
c=sprintf(insert,"INSERT INTO test Values( %s,%d)",app,id);
printf("%s \n",insert);
ad=sqlite3_exec(conn,insert,NULL,0,&zErrMsg);
if(ad)
{
printf("Errore nell'esecuzione della query \n");
sqlite3_close(conn);
}
else
printf("Query riuscita \n");
id=id+1;
}
else if(sel==2)
{
printf("%s",read);
ad=sqlite3_exec(conn,read,NULL,0,&zErrMsg);
if(ad)
{
printf("Errore nell'esecuzione della query \n");
sqlite3_close(conn);
}
else
printf("Query riuscita \n");
}
else
{
scanf("%d",&i);
c=sprintf(delete,"DELETE FROM test Where id = %d",i);
printf("%s \n",delete);
ad=sqlite3_exec(conn,read,NULL,0,&zErrMsg);
if(ad)
{
printf("Errore nell'esecuzione della query \n");
sqlite3_close(conn);
}
else
printf("Query riuscita \n");
}
sqlite3_close(conn);
}
la compilazione va a buon fine
quando mando in esecuzione la 1°query mi da sempre errore
la 2° va a buon fine(ma non stampando niente non so se sia vero)
la 3° va a buon fine ma quando vado a controllare mi ritrovo i 2 nomi che c'erano quindi suppongo che la query non sia stata svolta
qualche suggerimento??
pensavo di inserire prima degli sqlite3_exec la funzione sqlite3_prepare_v2 che dovrebbe preparare exec(o step) all'esecuzione della query