2012-07-24 53 views
1

我想创建一个Sqlite数据库使用Monotouch 3.0.3.4。一切工作正常在iPhone模拟器上,但我在测试iPhone上得到以下错误:创建一个SQLite数据库与Monotouch - 权限被拒绝

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()); 
    } 

    ... 

我也曾尝试specifing个人文件夹,但没有效果。我需要做些什么才能确保权限是正确的?

谢谢!

回答

1

的MonoTouch 3.0.3.4

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

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

上的应用程序进行签名的设备,因此其内容不能改变(不破坏签名)。因此,您可以在目录中更改内容而不是

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

查看linked article了解更多详情。

+0

谢谢,链接的文章给了我数据库工作的信息。非常感谢! – user1549631 2012-08-08 11:23:57

+0

太棒了:)请花时间将问题标记为已回答(选中投票计数下方的复选标记),以便其他寻找类似问题的用户可以很快看到他们的解决方案。 – poupou 2012-08-08 12:05:18