我正在尝试使用Monotouch 3.0.3.4创建一个Sqlite数据库。在iPhone模拟器上一切正常,但我在测试iPhone上遇到以下错误:
DataLayer.CreateDatabase例外:System.UnauthorizedAccessException:拒绝访问路径“/private/var/mobile/Applications/4B4944BB-EC37-4B0C-980C-1A9B60DACB44/TestApp.app/myDatabase.db3”。
以下是我正在使用的代码:
// creates database and tables if they do not exist.
public void CreateDatabase ()
{
string sql = string.Empty;
string dbFileName = "myDatabase.db3";
try {
if (!File.Exists (dbFileName)) {
// create database
SqliteConnection.CreateFile (dbFileName); //This is where the error occurs
Console.WriteLine ("CreateDatabase: Database created.");
...
}
catch (Exception ex) {
Console.WriteLine ("CreateDatabase Exception: " + ex.ToString ());
}
...
我也尝试过指定个人文件夹,但这没有效果。我需要做些什么才能确保权限正确?
谢谢!
答案 0 :(得分:1)
Monotouch 3.0.3.4
这可能是MonoDevelop 3.0.3.4。请参阅关于MonoDevelop 以获取MonoTouch版本。
“/私有的/ var /移动/应用/ 4B4944BB-EC37-4B0C-980C-1A9B60DACB44 / TestApp.app / myDatabase.db3”
在设备上,应用程序已签名,因此其内容无法更改(不会破坏签名)。因此,您 允许更改.app
目录中的内容。
您应该在Documents
目录中创建(或复制)数据库,然后以读写方式打开数据库。
有关详细信息,请参阅linked article。