我有这个奇怪的问题..
我在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);