我有一个运行SQLite数据库的iPad应用程序。我使用FMDatabase作为包装器,它一直运行得非常好,直到我开始获取大量数据。
每天一次,我的用户必须从我们的服务器下载一个大文件。这是一个应该在iPad上执行的SQL脚本,用于更新那里的记录/表。此文件已变得非常大,并且无法按预期工作。
使用FMDatabase,我必须将文件读入NSString,然后处理SQL语句。这就是我认为瓶颈的地方......我认为存储在内存中的数据量太大了。这是我的剧本:
BOOL isFinishedSyncing = [db executeUpdate:[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL]];
我想要直接运行此文件,但我不确定是否可行。
我唯一的另一个解决方案就是构建数据库并只替换存储在iPad上的数据库...但我不确定提供这样的SQL文件是否与构建数据库相同。 ..
我最近尝试了以下功能:
+(BOOL)execFileFromDatabase: (sqlite3 *)db sqlFilePath:(NSString*)filepath{
NSError *error;
NSString *content = [NSString stringWithFormat:@".read %@", filepath];
if(error){
return NO;
}
char* execError;
int x = sqlite3_exec(db, [content UTF8String], nil, nil, &execError);
if(execError){
NSLog(@"DB: --- %s", execError);
}
return x == SQLITE_OK;
}
我收到了这个回复:
DB: --- near ".": syntax error
感谢任何帮助!