1

我正在尝试使用 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 ());
    }

    ...

我也尝试过指定个人文件夹,但这没有效果。我需要做什么来确保权限正确?

谢谢!

4

1 回答 1

1

单点触控 3.0.3.4

这很可能是 MonoDevelop 3.0.3.4。请参阅关于 MonoDevelop以获取 MonoTouch 版本。

“/private/var/mobile/Applications/4B4944BB-EC37-4B0C-980C-1A9B60DACB44/TestApp.app/myDatabase.db3”

在设备上,应用程序已签名,因此它们的内容不能更改(不破坏签名)。因此,您不允许更改.app目录中的内容。

您应该在目录中创建(或复制)数据库,Documents然后以读写方式打开数据库。

有关更多详细信息,请参阅链接文章

于 2012-07-24T19:35:17.190 回答