web-dev-qa-db-ja.com

Sqlite in flutter、データベースアセットのしくみ

すでにフォーマットされており、アプリに必要なデータを読み込むために、( https://github.com/tekartik/sqflite/blob/master/doc/opening_asset_db.md )を読んでいます。機能のみ。

したがって、外部のcsvファイルにすべての情報が既にある場合のsqliteデータベースの作成についての私の理解は、次のようなアプリの.Dartファイルにクラスモデルを作成することです。

class User {

  int id;
  String _firstName;
  String _lastName;
  String _dob;

  User(this._firstName, this._lastName, this._dob);

  User.map(dynamic obj) {
    this._firstName = obj["firstname"];
    this._lastName = obj["lastname"];
    this._dob = obj["dob"];
  }

  String get firstName => _firstName;

  String get lastName => _lastName;

  String get dob => _dob;

  Map<String, dynamic> toMap() {
    var map = new Map<String, dynamic>();
    map["firstname"] = _firstName;
    map["lastname"] = _lastName;
    map["dob"] = _dob;
    return map;
  }
  void setUserId(int id) {
    this.id = id;
  }
}

次に、すべてのユーザー情報が含まれているcsvファイル(ユーザークラスに対応する値が含まれている)がある場合、データベースアセットを使用して情報を入力し、フラッターアプリ内で呼び出します。 ?これについては多くの方法があると思いますが、.dbファイルは正確に何を格納しており、どのようにフォーマットされていますか?この.dbファイルに.csvファイルを実装できますか?

8
Mfreeman

この.dbファイルは、SQLデータを保存するために使用されます。そのため、SQLコマンドを使用してデータを保存および取得できます。プラグイン自体が.dbファイルのデータを解析します。

データをCSVとして保存してクラスで解析する場合は、データをrawファイルに保存する(ファイルを保存するには here を参照)または this plugin を使用することをお勧めします。ただし、データをJSONファイルとして保存する、または キーと値のペア で保存する方法は他にもあります。

1
Yamin

プロジェクトのルートにあるファイルシステムのアセットを追加します。アセットフォルダーを作成し、その中にdbファイルを配置します。

assets/examples.db

Flutterセクションのpubspec.yamlでアセットを指定します

flutter:

  assets:

    - assets/example.db

次に、データベースが存在する場合はデータベースを開くか、存在しない場合はコピーする必要があります。

ここのリンクは、既存のsqliteデータベースを開く/コピーするコードを示しています。

https://github.com/tekartik/sqflite/blob/master/sqflite/doc/opening_asset_db.md

0
live-love