Невозможно открыть таблицу sqlite3: iPhone - PullRequest
0 голосов
/ 03 декабря 2011

У меня странная проблема ..

Я создал таблицу в базе данных sqlite3, вставил в нее 2-3 записи с терминала, когда я выполняю запрос выбора на терминале, я получаю требуемый результат,Я добавил эту существующую базу данных в мой проект Xcode 4.

Если я пытаюсь открыть эту базу данных из моего кода, она открывается успешно, но моя таблица не существует в базе данных.

Я хотел выбрать значения из своего кода, но он говорит, что такая таблица не закрывается. Как мне добавить таблицу, которую я создал в терминале?Мне кажется странным, что если база данных была скопирована, то почему она не может получить таблицу?

Код:

 - (NSString *)dataFilePath 
    {
        NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        return [documentsDirectory stringByAppendingPathComponent:@"questionaire.sqlite3"];
    }


if (sqlite3_open([[self dataFilePath] UTF8String], &database)!= SQLITE_OK) 
    {
        sqlite3_close(database);
        NSAssert(0, @"Failed to open database");
    }
    else if(sqlite3_open([[self dataFilePath] UTF8String], &database)== SQLITE_OK) 
    {
        NSLog(@"Opened");
    }

NSString *query = @"select QID, QUESTION, OPTION1, OPTION2, OPTION3, OPTION4 from QUIZ_QUESTIONS WHERE QID =1";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String],-1, &statement, nil) == SQLITE_OK)
{
    NSLog(@"not in");
    if(sqlite3_step(statement) == SQLITE_ROW ) 
    { 
        int row = sqlite3_column_int(statement, 0);
        NSString *QIDField = [[NSString alloc] initWithFormat:@"%d", row];

        char *showQuestion = (char *)sqlite3_column_text(statement, 1);
        NSString *questionField = [[NSString alloc] initWithUTF8String:showQuestion];

        char *optionA = (char *)sqlite3_column_text(statement, 2);
        NSString *optionAField = [[NSString alloc] initWithUTF8String:optionA];

        char *optionB = (char *)sqlite3_column_text(statement, 3);
        NSString *optionBField = [[NSString alloc] initWithUTF8String:optionB];

        char *optionC = (char *)sqlite3_column_text(statement, 4);
        NSString *optionCField = [[NSString alloc] initWithUTF8String:optionC];

        char *optionD = (char *)sqlite3_column_text(statement, 5);
        NSString *optionDField = [[NSString alloc] initWithUTF8String:optionD];

        question.text = questionField;
        option1.text = optionAField;
        option2.text = optionBField;
        option3.text = optionCField;
        option4.text = optionDField;
    }
    sqlite3_finalize(statement); 
}
else {
    NSLog(@"Cant open");
}
sqlite3_close(database);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...