更新时出错。 '尝试写入只读数据库
你好,
我正在使用 sqlite 数据库。我知道应用程序崩溃或系统崩溃后数据库被锁定。
我如何避免我的 sqlite 数据库被锁定。
如何在 DML 查询期间检查数据库锁定。
如何打开锁定的数据库。
谢谢曼迪普
,
下面是我的代码。
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyApp.sqlite"];
return defaultDBPath;
现在我将上面的代码更改为这样。
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
HI
I am using sqlite database. I know after application crash or system crash database get locked..
How I avoid to get my sqlite db locked.
How does I check that database lock during DML queries.
How does I open locked database.
Thanks
Mandeep
following is My Code.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MyApp.sqlite"];
return defaultDBPath;
Now I changed above code to this.
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 Cocoa 应用程序中使用 SQLite 的许多示例都提到了将空的“模板”数据库副本存储为应用程序包中的资源的方法。请务必注意,应用程序包不应是可写的,因此此方法要求您将模板复制到可写位置(请使用标准存储位置)并使用该文件作为可写副本。
这可能是你的问题吗?
Many examples of using SQLite in Cocoa apps mention the approach of storing an empty "template" database copy as a resource within the application bundle. It's important to note an app bundle is not supposed to be writable, so this approach requires you copy the template to a writable location (use the standard storage locations, please) and use that file as your writable copy.
Could this be your problem?