PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQLite findet meine Tabelle nicht



LordTerra
11-09-2007, 12:46
hi

ich hab ein problem!
und zwar hab ich ein c-programm welches eine SQLite3 DB - Datei aufmachen soll und dann ein select auf die Tabelle user machen soll...




#include <stdio.h>
#include <sqlite3.h>

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
printf("argc: %i\n", argc);
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}

int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char *sql;

rc = sqlite3_open("avs.DB", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
sql = "SELECT id FROM user";
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);

if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}

Das Problem: er sagt mir jedesmal das er die Tabelle user nicht finden kann.

wenn ich per konsole in die DB-Datei geh und nen Show Tables mach ist diese aber vorhanden und ich kann auch per select befehl alles ausgeben...

was kann das sein?

und als 2.: wenn ich statt dem select befehl show tables als sql befehl schreibe sagt der mir: show: syntax error

pls help
LordTerra

Waxolunist
12-09-2007, 12:32
Mit SQLite kenn ich mich nicht aus, aber es sieht aus, als würdest du einen falschen Namespace angeben in deinem Programm.

lokicall
30-09-2007, 13:42
Sicher das sqlite "show" kennt. Siehe hier (http://www.sqlite.org/lang.html)

Christoph
01-10-2007, 10:12
SHOW ist kein SQL, sondern wird nur von der SQLite SQL-Shell verstanden (vermutlich mit einem Punkt davor). Dieser Befehl kann also aus einen C-Programm heraus nicht klappen.

Hast Du denn die Tabelle selber USER mit CREATE TABLE angelegt?
Oder gehört sie vielleicht zum System Catalog von SQLite und ist deshalb nur mit Klimmzügen erreichbar?