Ich versuche, aus einer Datenbankdatei zu lesen (Ausführen einer einfachen Auswahl aller Funktionen).Lesen von SQLite - FMDB - Anfänger
Ich verwende FMDB.
Hier ist, wie ich die DB erstellt habe;
Pro:~ dd$ sqlite3 db.db
SQLite version 3.7.7 2011-06-25 16:35:41
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table cus(id integer primary key, firstname varchar(30));
sqlite> inser into cus(firstname)values('f');
Error: near "inser": syntax error
sqlite> insert into cus(firstname)values('f');
sqlite> select * from cus;
1|f
sqlite>
Ich habe die Datei (db.db) in meinen Ressourcenordner in xCode kopiert. den Namen der db-Datei in db.db im App-Delegaten geändert. Code für mein Programm ist genau das gleiche wie this tutorial.
Hier ist der Code;
-(NSMutableArray *) getCustomers
{
NSMutableArray *customers = [[NSMutableArray alloc] init];
NSString * path = [(AppDelegate*)[[UIApplication sharedApplication]delegate]databasePath];
NSLog(@"DB path %@ ",path);
FMDatabase *db = [FMDatabase databaseWithPath:path];
[db open];
FMResultSet *results = [db executeQuery:@"SELECT * FROM cus"];
NSLog(@"result %@ ",results);
while([results next])
{
NSLog(@"result %@ ",results);
Customer *customer = [[Customer alloc] init];
customer.customerId = [results intForColumn:@"id"];
customer.firstName = [results stringForColumn:@"firstname"];
[customers addObject:customer];
}
[db close];
return customers;
}
Mein Problem;
Obwohl es 1 Datensatz in der DB gibt, ist das Ergebnis der Select
-Anweisung NULL
. Warum ist das und wie kann ich das korrigieren?
Können Sie Abfrage mit einem weiteren Parameter ausführen ** Fehler ** Anweisung von https://github.com/ ccgus/fmdb Das Ausführen von Abfragen gibt bei Erfolg ein FMResultSet-Objekt und bei einem Fehler null zurück. Wie bei der Ausführung von Aktualisierungen gibt es eine Variante, die den Parameter NSError ** akzeptiert. Andernfalls sollten Sie die Methoden -lastErrorMessage und -lastErrorCode verwenden, um festzustellen, warum eine Abfrage fehlgeschlagen ist. –
stimme ich zu. Verwenden Sie den lastErrorMessage/Code, um zu sehen, was das Problem mit Ihrer Datenbank ist. Sie sollten auch überprüfen, ob die Datenbank überhaupt erstellt wurde und Sie executeQuery nicht an ein Nil-Objekt senden. Der Pfad ist möglicherweise falsch. – Eugene
Wo sollte ich diesen Code haben, könnten Sie mir helfen, meinen Code zu bearbeiten? – Illep