Подтвердить что ты не робот

FMDB ios нет такой таблицы

У меня проблема с проектом sqlite, который я делаю, я использую FMDB, я следую простому примеру, но не работаю. И я не могу найти ошибку. Я сделал схему базы данных с терминала, я поместил на нее некоторые данные. Я очень новичок в ios dev, поэтому я точно не знаю, выполнил ли я все шаги. Это то, что я сделал:

1 - Я создал схему базы данных и добавил несколько полей. 2 - Я скопировал database.db в папку проекта в xcode. 3 - Я добавляю файлы FMDB. 4 - Я добавляю sqlite3.dylib 5 - я помещаю этот код:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.dbname = @"database.db";
    NSArray * docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * docDIr = [docPath objectAtIndex:0];
    self.dbpath = [docDIr stringByAppendingPathComponent:dbname];

    [self checkDB];

    [self getQ];

    return YES;
}
-(void) getQ
{
    FMDatabase * db = [FMDatabase databaseWithPath:dbpath];
    [db open];

    FMResultSet * result = [db executeQuery:@"SELECT * FROM table1"];

    NSLog(@"last Error: %@",[db lastErrorMessage]);
    NSLog(@"result: %@", result);
}
-(void) checkDB
{
    BOOL success;
    NSFileManager * fm = [NSFileManager defaultManager];
    success = [fm fileExistsAtPath:dbpath];
    NSError * error = [[NSError alloc] init];
    if (success) return;
    NSLog(@"result:");
    NSString * dbPathFromApp = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:self.dbname];

    [fm copyItemAtPath:dbPathFromApp toPath:dbpath error:&error];           
}

По-видимому, база данных пуста, так что случилось? почему я не могу найти таблицу1? Если я открываю файл с любым sqlite gui, таблица выглядит просто отлично. Спасибо за любую помощь Консоль покажет мне следующие строки: 2013-03-02 14: 03: 31.839 myApp [21433: c07] последняя ошибка: нет такой таблицы: table1 2013-03-02 14: 03: 31.841 myApp [21433: c07] результат: (null)

4b9b3361

Ответ 1

Несколько мыслей:

  • Я бы подтвердил, что база данных добавлена ​​в ваш комплект. Перейдите к своим целевым настройкам, выберите "Сформировать фазы", ​​разверните "Копировать ресурсы Bundle" и убедитесь, что ваша база данных указана там. Если нет, нажмите кнопку "+" и добавьте его.

    bundle

  • Я бы reset ваш симулятор. Если вы когда-либо запускали приложение и не копировали базу данных должным образом, она создала бы пустую базу данных для вас в папке документов. Сбросив ваш симулятор, вы можете избавиться от любых пустых баз данных, которые могут быть там.

  • Если он все еще не работает, я бы проверил базу данных пакетов в вашем симуляторе. Перейдите в папку симулятора (~/Library/Application Support/iPhone Simulator), найдите приложение, откройте узел (нажав кнопку "ОК" и нажмите "показать содержимое пакета" ), и проверьте там базу данных и сделайте уверен, что у вас есть table1.