0

好的,现在我完成了在模拟器上的开发,当我安装在我的测试设备上时,我得到了错误

尝试写一个只读数据库

控制数据库访问的设置是什么?这在部署时会难以管理吗?

更多信息......我想我知道发生了什么......当我寻找我的数据库时,它与教程的路径不同。我喜欢做的是在项目的根文件夹下为“内容”创建一个组。我在我定义的路径下的这个组中添加了 JustADatabase.sqlite 文件。由于并非所有路径都是可写的,我推测我的用户创建的路径在安装时不可写。

我相信有一种方法可以使用构建/复制脚本将文件安装在正确的位置。

你认为这是问题所在吗?您知道如何编写修复脚本或如何将文件放在我的项目中的正确位置以便正确复制吗?以下是通往 sqlite-open 命令的代码,其中注释掉了“教程”路径。这适用于读取,可能是拒绝写访问的原因。

- (void)initializeDatabase {

    // ??? NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    // ??? NSString *documentsDirectory = [paths objectAtIndex:0];
    // ??? NSString *pathTutorial = [documentsDirectory stringByAppendingPathComponent: @"JustaDatabase.sqlite"];
    NSString *path = [[NSBundle mainBundle] pathForResource:@"JustaDatabase" ofType:@"sqlite"]; 

    if( sqlite3_open([path UTF8String], &database) == SQLITE_OK ) {
        NSLog(@"%s: opened database %@", __FUNCTION__, path);
    } else {
        NSAssert1(0,@"Failed to open database: '%s'.", sqlite3_errmsg(database));
    }
}
4

1 回答 1

1

sqlite3 权限只是文件权限。

您需要将 db 文件复制到文档目录,因为您无法写入设备上 bundle 目录中的文件。

于 2010-04-19T03:26:47.303 回答