Xamarin 外部ストレージのSQLiteデータベースに接続する(Android)

NuGetで「sqlite-net-pcl」をプロジェクトに追加する

sqlite-net-pclをインストールする

データベーステーブルのクラスを作成する

例:class Book

public class Book
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Text { get; set; }
    public DateTime Date { get; set; }
}

参照:C# SQLite クラス内の属性 Attributes

データベース用のクラスを作成する

例:TestDatabaseクラスの作成
データベースに空のBookテーブルを作成する

public class TestDatabase
{
    readonly SQLiteAsyncConnection _database;

    public TestDatabase(string dbPath)
    {
        _database = new SQLiteAsyncConnection(dbPath);
       //  _database.CreateTableAsync<Book>().Wait();
    }

    // get
    public Task<List<Book>> GetBookTable()
    {
        return _database.Table<Book>().ToListAsync();
    }

    // delete
    public async Task DeleteBookTable()
    {
        await _database.DeleteAllAsync<Book>();
    }

    // INSERT
    public async Task InsertBookTable(List<Book> bookList)
    {
        await _database.InsertAllAsync(bookList);
    }
}
 

Appクラスの編集

App.xaml.csにコードを追加する

※外部ストレージのPathを「/storage/emulated/0」とする
※参考:Xamarin 外部ストレージのPathを取得する(Android)

public partial class App : Application
{
    static TestDatabase database;

    public static TestDatabase Database
    {
        get
        {
            if (database == null)
            {
                database = new TestDatabase(Path.Combine("/storage/emulated/0", "Test.db"));
            }
            return database;
        }
    }
    ・・・・・・・・・・
}
 

Databaseの使用

TestDatabase database = App.Database;

AndroidManifest.xmlのアクセス許可

  • ソリューションエクスプローラーでAndroidプロジェクトを右クリック→「プロパティ」
  • 「Androidマニフェスト」タブを開く
  • 必要なアクセス許可で「WRITE_EXTERNAL_STORAGE」をチェックする

アプリの権限でのアクセス許可

  • スマホの「設定」→「アプリと通知」→「アプリ情報」インストールしたアプリのアプリ情報を開く
  • 「権限」をタップ
  • ストレージをオンにする

参考:XamarinでSQLiteを利用するXamarin SQLite (C#)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください