Я пытаюсь читать из файла базы данных (выполняя простые функции выбора всех функций).Чтение из SQLite - FMDB - Новичок
Я использую FMDB.
Вот как я создал БД;
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>
Я скопировал файл (db.db) в папку ресурсов в xCode. изменилось имя файла db на db.db в делегате приложения. Код для моей программы точно такой же, как this tutorial.
Вот код;
-(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;
}
Моя проблема;
Несмотря на то, что в БД имеется 1 запись, результат Select
составляет NULL
. Почему это и как я могу исправить?
Вы можете выполнить запрос с еще одним параметром ** Ошибка ** заявление https://github.com/ ccgus/fmdb Выполнение запросов возвращает объект FMResultSet в случае успеха и nil после сбоя. Подобно выполнению обновлений, существует вариант, который принимает параметр NSError **. В противном случае вы должны использовать методы -lastErrorMessage и -lastErrorCode, чтобы определить, почему запрос не удался. –
Согласен. Используйте lastErrorMessage/Code, чтобы узнать, в чем проблема с вашей базой данных. Вы также должны проверить, создана ли база данных, и вы не отправляете executeQuery в объект nil. Путь может быть неправильным. – Eugene
Где я должен иметь этот код, не могли бы вы мне помочь изменить свой код? – Illep