iPhone fdbm SQLite не читает данные - PullRequest
1 голос
/ 28 декабря 2011

У меня есть проект, который включает FMDB для управления SQLite базами данных. Я импортировал и связал оболочки FMDB, но проблема в том, что при запросе к базе данных результаты не отображаются:

База данных sqlite, созданная с помощью Firefox SQLite Manager (Ubuntu), и я копирую ее в Xcode.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"db.sqlite"];

FMDatabase *db = [FMDatabase databaseWithPath:path];

[db open];

FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"];

while([fResult next])
{
    NSLog(@"%@",[fResult stringForColumn:@"title"]);
}
[db close];  

1 Ответ

1 голос
/ 28 декабря 2011

Если вы скопировали свою базу данных в xCode, вам следует сначала найти базу данных в пути к ресурсам основного пакета приложения, а затем скопировать ее в каталог «Документы», если ее там еще нет, только тогда вы можете работать с ней. , Возможно, вы захотите отладить объект FMDatabase, используя сообщения lastErrorMessage и lastErrorCode.

FMDatabase *db = [FMDatabase databaseWithPath:path];
NSLog(@"database instantiated: %@", db];

[db open];

NSLog(@"Database has encountered an error with message: %@. And code: %d", db.lastErrorMessage, db.lastErrorCode];

FMResultSet *fResult= [db executeQuery:@"SELECT * FROM mytable"];

while([fResult next])
{
    NSLog(@"%@",[fResult stringForColumn:@"title"]);
}
[db close];  

Другая проблема, конечно, может показаться глупой, но если ваш «mytable» ничего не содержит, выражение цикла while всегда будет ложным. Но я думаю, что база данных не находится в каталоге Documents.

...