我有以下代码片段来更新firefox扩展sqlite数据库
NSString * profileFolderPath = [[ @"~" stringByExpandingTildeInPath] stringByAppendingPathComponent:@"/Library/Application Support/Firefox/Profiles"];
NSString *sqlitePath = [pathToProfileFolder stringByAppendingPathComponent:@"extensions.sqlite"];
int rc = sqlite3_open([sqlitePath UTF8String], &db);
if( rc )
{
NSLog(@"enable extension :%@\n",[NSString stringWithCString:sqlite3_errmsg(db)]);
sqlite3_close(db);
return NO;
}
else {
NSLog(@"opened entensions db successfully \n");
}
// check the values for active and userDisabled fields
rc = sqlite3_exec(db,"SELECT active,userDisabled FROM addon where id='myId.com'",sqliteCallback,0,&zErrMsg);
if (rc!=SQLITE_OK ) {
NSLog(@"error quering the entensions database :%@\n",[NSString stringWithCString:zErrMsg]);
if(zErrMsg)
sqlite3_free(zErrMsg);
sqlite3_close(db);
return NO;
// handle error
}
当firefox应用程序未处于运行状态时,我可以读取值并更新数据库,但是当firefox运行时,我无法读取数据库中的值,因为sqlite3_exec语句返回值5和I可以看到控制台中的错误“错误查询扩展数据库:数据库被锁定”。
如何解决此问题。请帮助。
答案 0 :(得分:1)
你不能b / c firefox在运行时保持自己的配置文件(扩展db文件是一个firefox自己的配置文件)打开。