Flutter

【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クラスから、クエリと条件に入る値を取得出来る事が分かりました。

database.dart
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のドキュメントをざっと確認しても見つけられなかったので、結局コードから見つけ出してしまいました。

何か無理矢理な方法になりましたが、ひとまずクエリの確認方法が分かって良かったです。

made with Flutter

この記事を書いた人がつくったアプリ

Flutter の記事

コメントの受け付けは終了しました。ご意見・ご質問は X(@nm_aru)へどうぞ。