【Flutter】driftで実行SQLを確認する方法
最終更新から3年以上たっています。ライブラリのバージョンや手順が変わっている可能性があります。
こんにちは。趣味グラマのNobu(@nm_aru)です。
アプリのローカルデータベースとしてdriftを使っています。
期待したデータが取れない時に、実行されるSQLを確認したいと思い、その方法が分かったので備忘録として残したいと思います。
Welcome to Drift!
Drift is a reactive persistence library for relational data in Dart and Flutter apps.
SimpleSelectStatementクラスのconstructQuery()メソッドを使う
driftのget()メソッドを見ていくと、constructQuery()と言うメソッドを呼び出しており、そこで取得出来るGenerationContextクラスから、クエリと条件に入る値を取得出来る事が分かりました。
final stmt = select(tables);
stmt.where((t) => t.ticnameker.equals(name));
stmt.where((t) => t.updated.year.equals(date.year));
stmt.orderBy([(t) => OrderingTerm(expression: t.updated, mode: OrderingMode.desc)]);
// この2行で、実行SQLと条件に入る値の両方を出力できる
print('Query : ${stmt.constructQuery().sql}');
print('Variables : ${stmt.constructQuery().boundVariables}');
await stmt.get();他にも色んなプロパティが存在しています。
GenerationContext class - drift library - Dart API
API docs for the GenerationContext class from the drift library, for the Dart programming language.
まとめ
driftのドキュメントをざっと確認しても見つけられなかったので、結局コードから見つけ出してしまいました。
何か無理矢理な方法になりましたが、ひとまずクエリの確認方法が分かって良かったです。
Flutter の記事
コメントの受け付けは終了しました。ご意見・ご質問は X(@nm_aru)へどうぞ。


