美文网首页flutter学习
Flutter Sqlite使用

Flutter Sqlite使用

作者: JalorOo | 来源:发表于2019-07-07 17:22 被阅读0次

1、添加Sqlite依赖

dependencies:
  flutter:
    sdk: flutter
  sqflite: 1.0.0

2、在使用界面引用:

import 'package:sqflite/sqflite.dart';

3、封装函数

///创建数据库db
  _createDb(String dbName,int vers,String dbTables) async {
    //获取数据库路径
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);
    print("数据库路径:$path数据库版本$vers");
    //打开数据库
    await openDatabase(
        path,
        version:vers,
        onUpgrade: (Database db, int oldVersion, int newVersion) async{
          //数据库升级,只回调一次
          print("数据库需要升级!旧版:$oldVersion,新版:$newVersion");
        },
        onCreate: (Database db, int vers) async{
          //创建表,只回调一次
          await db.execute(dbTables);
          await db.close();

        }
    );

  }


  ///增
  _add(String dbName,String sql) async {
    //获取数据库路径
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);
    print("数据库路径:$path");

    Database db = await openDatabase(path);
    await db.transaction((txn) async {
      int count = await txn.rawInsert(sql);
    });
    await db.close();
  }


  ///删
  _delete(String dbName,String sql) async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);

    Database db = await openDatabase(path);
    int count = await db.rawDelete(sql);
    await db.close();
  }

  ///改
  _update(String dbName,String sql,List arg) async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);

    Database db = await openDatabase(path);
    int count = await db.rawUpdate(sql,arg);//修改条件,对应参数值
    await db.close();
  
    
  }


  ///查条数
  _getQueryNum(String dbName,String sql) async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);

    Database db = await openDatabase(path);
    int count = Sqflite.firstIntValue(await db.rawQuery(sql));
    await db.close();
    return count;
  }

  ///查全部
  _query(String dbName,String sql) async {
    var databasesPath = await getDatabasesPath();
    String path = join(databasesPath, dbName);

    Database db = await openDatabase(path);
    List<Map> list = await db.rawQuery(sql);
    await db.close();
  }

4、Sql常用语句:

//add
String sql = "INSERT INTO student_table(name,age) VALUES('${_nameController.text}','${_ageController.text}')";
          _add(_dbName, sql);

//delete
String sql = "DELETE FROM student_table";//无条件删除学生表数据
          _delete(_dbName, sql);

//update
String sql = "UPDATE student_table SET name =? WHERE id = ?";
          _update(_dbName, sql,[_nameController.text,1]);

//query
String sql = 'SELECT * FROM student_table';
          _query(_dbName, sql);
String sql = 'SELECT * FROM $tableBook limit $mCount,10';
//limit  X,Y  中X表示跳过X个数据,读取Y个数据

相关文章

网友评论

    本文标题:Flutter Sqlite使用

    本文链接:https://www.haomeiwen.com/subject/eaqihctx.html