2014-04-28 48 views
2

我是Android新手。Xamarin Android C#SQLite

我在Visual Studio上使用Xamarin並在C#中編碼。

我見過創建數據庫的示例,如果它不存在,但不是我正在尋找的。

有沒有人有任何代碼(C#)使用現有的SQLite數據庫已經在資產文件夾,而不是在Android設備上創建新的數據庫?

+0

C#Android的SQLite示例?????? – dbw

+0

所以基本上你問如何打開一個現有的數據庫?我們使用https://github.com/praeclarum/sqlite-net。您可以創建一個從SQLiteConnection繼承的類,並將數據庫的文件名傳遞給構造函數。例如:http://goo.gl/8I6Sf2(在Android上完全一樣)但實際上在創建新文件或打開現有文件方面沒有區別,所以我認爲您的問題可能沒有明確定義。 – TimothyP

回答

0

您必須將數據庫文件從Assets文件夾複製到設備上的某個位置,然後在您的應用程序中使用該文件夾。請注意,當您的應用程序首次啓動時,您只需執行一次此操作。

+0

我得到它的工作...你可以在這裏找到示例。 http://stackoverflow.com/questions/23425201/android-xamarin-c-sharp-no-record-added-to-sqlite – user1929393

+0

上面的鏈接被破壞 - @ user1929393,你可以提供一次性複製的示例代碼文件到內部存儲? –

0

打開一個現有的SQLite數據庫與創建一個新的SQLite數據庫有很大的不同。

假設你正在使用sqlite-net(你應該),
所有你需要做的就是創建一個從SQLiteConnection繼承的類。

public class CustomerDatabase : SQLiteConnection 
{ 
    public CustomerDatabase(string filename) : base(filename, true) 
    { 
     //This will open the database file specified by filename 
    } 
} 

如果指定的文件名引用了現有的數據庫,數據庫將被打開。
如果它引用了一個不存在的文件,將嘗試創建一個新的數據庫。

在這一點上,我將假設你有2個問題:

  1. 要打開並操作數據庫,即使你沒有
    定義爲您的應用程序的一部分的模型做的。這意味着你的應用程序有
    不知道數據庫實際的外觀。因此,唯一的選項
    將是定義它們或執行原始SQL查詢並處理dynamic響應。
  2. 您在資產文件夾
    中向項目添加了現有數據庫,但據我所知在運行時無法對這些文件執行write操作。
    應該在應用程序第一次啓動時將數據庫複製到正常存儲。

除此之外,你應該都準備好了。

+0

請注意,sqlite-net庫也可以通過NuGet使用,並且您通常會簡單地將兩個.cs文件添加到您的項目中。像所有桌面平臺以及Android一樣魅力無窮。 – TimothyP