Monotouch - 在单触项目中附加Sqlite数据库并部署到iPad

时间:2011-05-27 20:14:58

标签: iphone database ipad sqlite xamarin.ios

到目前为止,我发现的有关在iPad / iPhone应用程序中使用Sqlite数据库的所有代码示例都会在部署应用程序后使用脚本来创建数据库。

但是有可能在monotouch中创建数据库,构建结构,甚至用数据预填充它并将其与iPad应用程序一起部署吗?

如果是这样,数据库的位置是什么,如何构建Sqlite连接? 目前我使用以下内容:

new SqliteConnection("Data Source=" + DatabasePath);

其中

public static String DatabasePath {
    get {
        string documents = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
        return Path.Combine (documents, "MyDB.db");
    }
}

2 个答案:

答案 0 :(得分:2)

您可以预先构建数据库copy it into the app bundle,并且(只要它是只读的)您可以随时从应用程序包中直接访问它。如果您需要写访问权限,可以将预先构建的文件复制到different directory,然后从那里进行修改。

答案 1 :(得分:2)

对于使用Monotouch的人来说,这是我对此问题进行排序的方式:

  1. 使用sqliteman
  2. 创建Sqlite数据库
  3. 在monodevelop中,右键单击Project>添加>添加文件
  4. 选择已创建的sqlite数据库,然后单击“打开”
  5. 点击警告对话框中的复制
  6. 右键单击刚刚添加的数据库>构建行动>含量
  7. 然后,您所要做的就是创建一个简单的方法将数据库复制到目标文件夹,例如Documents:

    public static void CopyDatabase(String destinationPath)
    {
        String path = NSBundle.MainBundle.PathForResource("MyDB", "db");
        File.Copy(path, destinationPath);
    }
    

    在我的情况下,destinationPath是问题中上面指定的路径:Here 。显然,在生产中你必须有某种机制来检查db是否已经存在,这样你就不会覆盖数据库文件。

    希望它有所帮助。