【Xamarin.Forms】プラットフォームごとのコードを一切書かずにSQLiteデータベースを使う

アプリごとに使う割に割と覚えられないやつ

1. NuGetからsplite-net-pclとPCLStorageをインストールする

f:id:White_Green:20181013003721p:plain 私はいつもSQLiteのライブラリはこれを使ってるんだけど、他の(確かPCLで使えるのがもう一つあったはず)でもいけるかもしれない(未確認)

2. データベースへの接続を取得するコードを書く
public class DataBase
    {
        private static SQLiteConnection _connection;
        public static SQLiteConnection GetConnection()
        {
            if (_connection != null) return _connection;
            return _connection = new SQLiteConnection(
                Path.Combine(PCLStorage.FileSystem.Current.LocalStorage.Path,
                    "<ここにデータベースのファイル名を入れる>")
                );
        }
    }

これでDataBase.GetConnection()でデータベースへの接続を取得できるようになる
中身は接続を保持してるとき(_connection!=nullのとき)はその接続を返して、そうでないときは新しく接続を作る(new ~~)だけ
新しく接続を作るときにPCLStorageからローカルストレージのパス(PCLStorage.FileSystem.Current.LovalStorage.Path)を取得して、その下にデータベースのファイルを作るようにする データベースのファイル名は何でもいいと思う 私はいつもdatabase.db3とかにしてる

3. 取得した接続を好きに使う

接続さえできればあとはデータベースいじり放題です 使用目的に合わせてお好きに使ってください
SQLite自体の扱い方はこの記事では扱いません

余談

クラスの設計とかの観点からみるとDataBaseクラスのGetConnectionメソッドはprivateにして、public staticSelectとかUpdateとかのメソッドを作るほうが正しい気がする
ちょうどSQLiteConnectionクラスをラップするような感じで
私はprism使ってるのでここからDI意識したコードにするけど