2011-05-27 42 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 。顯然,在生產中你必須有某種機制來檢查數據庫是否已經存在,這樣你纔不會覆蓋數據庫文件。

希望它有幫助。