zoukankan      html  css  js  c++  java
  • Sqlite in flutter, how database assets work

    First off, you will need to construct a sqlite database from your csv. This can be done in the following way:

    1. Create the necessary table (users.sql)

      CREATE TABLE users(
         firstname TEXT NOT NULL,
         lastname TEXT NOT NULL,
         dob TEXT NOT NULL
      );
    2. Create the sqlite database

      sqlite3 database.db < users.sql
    3. Insert the csv data

      sqlite3 database.db
      .mode csv
      .import data.csv users
    4. Put database.db into your assets and add that in pubspec.yaml.

      flutter:
        # ...
        assets:
          - assets/database.db
    5. In your app, you'll have to copy the asset file into "documents". This is slightly complicated.

      // Construct a file path to copy database to
      Directory documentsDirectory = await getApplicationDocumentsDirectory();
      String path = join(documentsDirectory.path, "asset_database.db");
      
      // Only copy if the database doesn't exist
      if (FileSystemEntity.typeSync(path) == FileSystemEntityType.notFound){
        // Load database from asset and copy
        ByteData data = await rootBundle.load(join('assets', 'database.db'));
        List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
      
        // Save copied asset to documents
        await new File(path).writeAsBytes(bytes);
      }
    6. Lastly, you can access the database like so.

      Directory appDocDir = await getApplicationDocumentsDirectory();
      String databasePath = join(appDocDir.path, 'asset_database.db');
      this.db = await openDatabase(databasePath);
      initialized = true;
    7. Example query (this._initialize() is step 6)

      Future<List<Page>> search(String word, int parentId) async {
          if (!initialized) await this._initialize();
          String query = '''
            SELECT * FROM users
            LIMIT 25''';
          return await this.db.rawQuery(query);
      }

  • 相关阅读:
    【Java学习笔记】<集合框架>Iterator的子接口ListIterator
    【Java学习笔记】<集合框架>List特有的取出方式之一
    【Java学习笔记】集合框架Ⅱ
    【Java学习笔记】集合框架Ⅰ
    【PS】Ⅱ图像合成与渐变工具笔记
    【PS】Ⅰ基础及选框工具笔记
    [PS]简单的智能电视制作案例
    Spring中线程池的使用
    SpringBoot 多线程
    solr DIH 设置定时索引
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10826036.html
Copyright © 2011-2022 走看看