我已經從包中將預填充的sqlite數據庫複製到庫路徑。現在,當我嘗試執行查詢時,它不讀取數據庫。我無法讀取我的預先存在的sqlite數據庫
代碼複製數據庫:
-(void)createDatabase
{
NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
NSString *targetPath = [libraryPath stringByAppendingPathComponent:@"gre.db"];
if (![[NSFileManager defaultManager] fileExistsAtPath:targetPath]) {
// database doesn't exist in your library path... copy it from the bundle
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"gre.db"];
NSError *error = nil;
if (![[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:targetPath error:&error]) {
NSLog(@"Error: %@", error);
}
}
}
我把這個從我applicationDidFinishLaunchLaunchingWithOptions和數據庫複製
這是我的查詢讀取數據庫:
-(void)readDatabase
{
wordlist = [[NSMutableArray alloc] init];
NSString *query =[NSString stringWithFormat:@"SELECT word FROM words WHERE word LIKE '%@%%'",selectedWord];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String],-1, &statement, nil) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
char *id1 = (char *)sqlite3_column_text(statement, 0);
[wordlist addObject:[NSString stringWithFormat:@"%s",id1]];
}
}
sqlite3_finalize(statement);
NSLog(@"%@",wordlist);
}
現在控制不進入*while (sqlite3_step(statement) == SQLITE_ROW)*
循環 因此不顯示數據。
在documentDirectory數據庫中是否爲空? – Yashesh 2013-03-28 09:42:28
您是否嘗試從設備中取回數據(或者在模擬器中查看它)以驗證內容是否真正被複制? – gaige 2013-03-28 09:47:06
否。數據庫已正確複製到庫路徑。但它並沒有進入.... while(sqlite3_step(statement)== SQLITE_ROW)! – Chiran 2013-03-28 09:48:58