无法打开sqlite3表:iPhone

时间:2011-12-03 19:56:45

标签: iphone ios xcode4 sqlite

我有这个奇怪的问题..

我在sqlite3数据库中创建了一个表,从终端插入了2-3条记录,当我在终端上执行select查询时,我得到了所需的结果。我已将此现有数据库添加到我的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);

0 个答案:

没有答案