Ciao a tutti!
Ho avuto un problema con SQLite3 per C (amalgamation version, compresa di sqlite3.h, sqlite3.c e sqlite3.def), praticamente quando cerco di creare uno statement da database aperto, mi da quest'errore:
library routine called out of sequence
Questo è il codice:
Codice PHP:
#include <stdio.h>
#include <string.h>
#include "sqlite3.h"
sqlite3 *db;
void OpenDatabase(const char *db_name){
char name[100];
if(!strstr(db_name, ".db")){
sprintf(name, "%s.db", db_name);
}
char *fname = (char *)name;
FILE *stream;
stream = fopen(fname, "r");
int rc = sqlite3_open(fname, &db);
if(rc){
DieWM("sqlite.c", "cannot open database.");
}
if(stream) Success("sqlite.c", "Database opened successfully!\n");
else Success("sqlite.c", "Database created and opened successfully!\n");
}
sqlite3_stmt * DatabaseQuery(const char *query, const char *INTERNAL, int line){
sqlite3_stmt * stmt;
int prep;
prep = sqlite3_prepare(&db, query, strlen(query)+1, &stmt, NULL);
if(prep != SQLITE_OK){
char cstring[100];
sprintf(cstring, "%d: DatabaseQuery: %s", line, sqlite3_errmsg(&db));
DieWM(INTERNAL, (char *)cstring);
}
return stmt;
}
const unsigned char *GetColumnString(sqlite3_stmt * stmt, int column){
const unsigned char *result = sqlite3_column_text(stmt, column);
return result;
}
int GetColumnInteger(sqlite3_stmt * stmt, int column){
int result = sqlite3_column_int(stmt, column);
return result;
}
Il database lo apre correttamente, ma la creazione dello statement non va..