0
点赞
收藏
分享

微信扫一扫

Flutter Sqlite 数据库

向上的萝卜白菜 2021-10-04 阅读 80

变量和sql

  String dbName = 'user.db';
  String dbPath;

  String sql_createTable =
      'CREATE TABLE user_table (id INTEGER PRIMARY KEY, username TEXT,pwd Text)';

  String sql_query_count = 'SELECT COUNT(*) FROM user_table';

  String sql_query = 'SELECT * FROM user_table';

  var _result;

/创建数据库/

  Future<String> _createNewDb(String dbName) async {
    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    print(documentsDirectory);

    String path = join(documentsDirectory.path, dbName);

    if (await new Directory(dirname(path)).exists()) {
      await deleteDatabase(path);
    } else {
      try {
        await new Directory(dirname(path)).create(recursive: true);
      } catch (e) {
        print(e);
      }
    }
    return path;
  }

  _create() async {
    dbPath = await _createNewDb(dbName);
    Database db = await openDatabase(dbPath);

    /*执行sql 创建表*/
    await db.execute(sql_createTable);
    await db.close();
    setState(() {
      _result = '创建user.db成功,创建user_table成功';
    });
  }

添加数据

 _add() async {


    Database db = await openDatabase(dbPath);

    String sql =
        "INSERT INTO user_table(username,pwd) VALUES('$username','$pwd')";
    await db.transaction((txn) async {
      int id = await txn.rawInsert(sql);
    });

    await db.close();

    setState(() {
      _result = "插入username=$username,pwd=$pwd数据成功";
    });
  }

删除数据

 _delete() async {
    Database db = await openDatabase(dbPath);

    String sql = "DELETE FROM user_table WHERE id = ?";

    int count = await db.rawDelete(sql, ['1']);

    await db.close();

    setState(() {
      if (count == 1) {
        _result = "删除成功,请查看";
      } else {
        _result = "删除失败,请看log";
      }
    });
  }

更新数据

  _update() async {
    Database db = await openDatabase(dbPath);
    String sql = "UPDATE user_table SET pwd = ? WHERE id = ?";
    int count = await db.rawUpdate(sql, ["654321", '1']);
    print(count);
    await db.close();
    setState(() {
      _result = "更新数据成功,请查看";
    });
  }

查询数量

  _queryNum() async {
    Database db = await openDatabase(dbPath);
    int count = Sqflite.firstIntValue(await db.rawQuery(sql_query_count));
    await db.close();
    setState(() {
      _result = "数据条数:$count";
    });
  }

查询内容

  _query() async {
    Database db = await openDatabase(dbPath);
    /*查询结果为 Map 集合*/
    List<Map> list = await db.rawQuery(sql_query);
    await db.close();
    setState(() {
      _result = "数据详情:$list";
    });
  }
举报

相关推荐

0 条评论