【Xamarin.Forms】プラットフォームごとのコードを一切書かずにSQLiteデータベースを使う
アプリごとに使う割に割と覚えられないやつ
1. NuGetからsplite-net-pclとPCLStorageをインストールする
私はいつも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 static
なSelect
とかUpdate
とかのメソッドを作るほうが正しい気がする
ちょうどSQLiteConnection
クラスをラップするような感じで
私はprism使ってるのでここからDI意識したコードにするけど