Почему я не могу прочитать свой SQlite с FMDB в IOS - PullRequest
0 голосов
/ 13 января 2012

Я создал файл БД из инструмента Firefox. Менеджер SQlite называет myTestDB

БД имеет имена таблиц ViewController1, а содержимое таблицы состоит из 5 столбцов (все значения имеют TEXT)

Я хочу прочитать значение по имени столбца, так вот мой код ....

- (void)viewDidLoad
{
[super viewDidLoad];
NSString *myDbPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"myTestDB.sqlite"];
FMDatabase *myDB = [FMDatabase databaseWithPath:myDbPath];
if (![myDB open]) {      
    NSLog(@"Could not open db.");    
    return ;
}
else
{
    NSLog(@"DB open!");
}
FMResultSet *rs = [myDB executeQuery:@"SELECT * FROM ViewController1"]; 
for (int i =0; i<[rs columnCount]; i++) {
    NSLog(@"%@",[rs stringForColumnIndex:i]);
} 
}

есть много примеров кодов, использующих метод

while([rs next])
{
//Loading somethin...
}

, но если я использую его, кодне попадет в цикл while даже один раз

, и мой код просто записывает мне 5 (ноль) ....

почему это ...?

спасибо за вашу помощь!

您 也 可以 用 中文 回答 我 , 謝謝 您!

1 Ответ

0 голосов
/ 13 января 2012

Попробуйте выйти из полного пути в эмуляторе, затем перейдите по этому пути в терминале и используйте инструмент sqlite3 cmdline, чтобы: - проверить, есть ли БД, и - вы можете выполнить запрос.

http://zetcode.com/databases/sqlitetutorial/tool/

Помните, что sqlite является ленивым - он создаст БД по требованию (при первой записи), поэтому вы можете создать пустую базу данных по требованию вместо того, чтобы открывать БД, которую вы открываете.

Вам также необходимо скопировать базу данных из ресурсов в библиотеку или документы, если вы когда-нибудь захотите написать в нее.БД в ваших ресурсах должна быть стартовым шаблоном.

РЕДАКТИРОВАТЬ:

Приведенные выше предложения не были причиной.Я оставлю ответ, а не удалю, чтобы помочь другим понять, в чем не проблема.

...