好吧,所以我有我的iPhone模擬器文件中的數據庫。我現在知道它在應用程序沙箱中。我的代碼中有些東西很時髦。所以我第一次拿到DB路徑:Sqlite數據庫沒有這樣的表存在
-(NSString *)getsynDbPath
{
NSString* dataBAse = [[NSBundle mainBundle] pathForResource:@"ddd"ofType:@"sqlite"];
return dataBAse;
}
然後,我測試的路徑:
NSString *testData;
testData = [self getsynDbPath];
NSFileManager * fileManager = [NSFileManager defaultManager];
BOOL success = [fileManager fileExistsAtPath:testData];
if (success) {
NSLog(@"Oh no! There was a big problem!");
} else {
//Successfully opened
if(sqlite3_open([testData UTF8String], &db)==SQLITE_OK){
NSLog(@"Raise the roof!");
//Calling method to loop through columns
[self listOfCols];
}
}
然後我去一個自定義的方法,我遍歷數據庫中的列:
-(NSArray *)listOfCols{
NSMutableArray *retval = [[[NSMutableArray alloc]init]autorelease];
NSString *query = @"SELECT KEY_ID FROM CON_DETAIL";
sqlite3_stmt *statement;
//Does not execute
if (sqlite3_prepare_v2(db, [query UTF8String], -1, &statement, nil)==SQLITE_OK) {
while (sqlite3_step(statement)==SQLITE_ROW) {
int key_id = sqlite3_column_int(statement, 0);
NSLog(@"Key ID: %d", key_id);
char *nameChars = (char *) sqlite3_column_text(statement, 1);
NSLog(@"chars %s", nameChars);
char *cityChars = (char *) sqlite3_column_text(statement, 2);
NSLog(@"chars %s", cityChars);
}
}
NSLog(@"%s Why '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(db), sqlite3_errcode(db));
return retval;
}
所以這是我的問題。在我成功打開數據庫之後,爲什麼會出現一條日誌錯誤消息:no such table: CON_DETAIL
?任何幫助表示讚賞。
你有沒有在數據庫中命名爲「CON_DETAIL」的故事? – Impossible
爲什麼不使用像FMDB這樣的包裝?它節省了時間... :) – bikram990
@不可能OP正在資源包中查找文件,而不是Documents文件夾。 – rmaddy