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个数据
网友评论