2011-05-27 57 views
1

我发现的所有代码示例都是关于在iPad/iPhone应用程序中使用Sqlite数据库时使用脚本在部署应用程序后创建数据库的。Monotouch - 在Monotouch项目中附加Sqlite数据库并部署到iPad

但是是否有可能在单点触摸中创建数据库,构建结构,甚至预填充数据并将其与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

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

+0

+1 - 我现在正在做一个项目,它完美的工作。 – 2011-05-27 20:36:02

+0

好吧。我不太喜欢这个事实,不得不将它移到写入数据库,但我想这就是它的样子。 – 2011-05-27 20:48:36

+0

将数据写入数据库的最佳位置是什么? – 2011-05-27 20:49:07

2

对于使用MonoTouch的人,我这是怎么排序的这个问题:

  1. 创造了sqliteman SQLite数据库
  2. 在MonoDevelop的,在项目右键单击>添加>添加文件
  3. 选择sqlite的DB中创建并单击打开
  4. 点击复制的警告对话框
  5. 右键点击你刚才添加的数据库>生成操作>内容

然后,所有你需要做的就是创建一个简单的方法将数据库复制到目标文件夹,就像文件:

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

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

希望它有帮助。