引入插件
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
sqflite: ^1.1.7+3
封装公共方法
这里的两个公共类是封装的比较好的,只要有sqlflite数据库操作就可以拿过来直接用的
- 数据库初始化,获取数据库对象以及关闭数据库。在sqflite中的数据库操作,首先得获取到数据库对象,通过数据库对象才可以对相应的表进行增删查改。
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class SqlManager{
static const _VERSION=1;
static const _NAME="my.db";
static Database _database;
///初始化
static init() async {
var databasesPath=await getDatabasesPath();
String path = join(databasesPath, _NAME);
_database=await openDatabase(path,version: _VERSION,onCreate: (Database db,int version) async{
});
}
///判断表是否存在
static isTableExits(String tableName) async {
await getCurrentDatabase();
var res=await _database.rawQuery("select * from Sqlite_master where type = 'table' and name = '$tableName'");
return res!=null && res.length >0;
}
///获取当前数据库对象
static Future<Database> getCurrentDatabase() async {
if(_database == null){
await init();
}
return _database;
}
///关闭
static close() {
_database?.close();
_database = null;
}
}
- 在对某一张表进行操作时,先得判断数据库对象是否存在,不存在就得创建。再判断表是否在该数据库中存在,不存在就创建。
import 'package:flutter_database/database/sql_manager.dart';
import 'package:sqflite/sqflite.dart'