我已将预填充的 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)*
循环因此不显示数据。