【问题标题】:Create a SQLite database with Monotouch - permission denied使用 Monotouch 创建 SQLite 数据库 - 权限被拒绝
【发布时间】:2012-07-25 03:35:17
【问题描述】:

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

    ...

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

谢谢!

【问题讨论】:

    标签: database sqlite xamarin.ios


    【解决方案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 目录中创建(或复制)数据库,然后以读写方式打开数据库。

    有关详细信息,请参阅linked article

    【讨论】:

    • 谢谢,链接的文章为我提供了使数据库正常工作的信息。非常感谢!
    • 太棒了 :) 请花点时间将问题标记为已回答(在投票数下方打勾),以便其他搜索类似问题的人可以快速找到适合他们的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2015-03-22
    • 1970-01-01
    • 2022-06-24
    相关资源
    最近更新 更多