数据库和excel的使用是一样的,确定路径,新建文件,绘制表格,填入数据
第0步 导入库
pubspec.ymal中添加依赖
dependencies:
# 数据库
sqflite: ^2.2.8+4
文件中引用
import 'package:sqflite/sqflite.dart';
第一步 找位置
方法1:默认的位置
String databasesPath = await getDatabasesPath();
方法2:用path_provider自定义一个位置
// 用getApplicationSupportDirectory() 是来自于path_provider的方法,
// 返回系统分配给程序专属访问的空间的路径,返回的是一个Directory类型的对象,
// 用.then((value)=>{})的方式把得到的Directory类型对象转换成String类型,
// 用 join 方法拼接得到路径字符串
String directory = await getApplicationSupportDirectory()
.then((value) =>value.path);
// 拼接路径和自定义的名字
String path = join(directory, dataBaseName);
第二步 建库
数据库和excel类比
数据库软件 | excel软件 |
---|---|
xxx数据库 | xxx.xls |
tabs | 表单 |
和使用excel不能说毫无二致,只能说一模一样
打开 “某某某数据库” 意思就是打开 “某某某.xls” 文件,
使用创建方法openDatabase,该方法即是打开也是创建
数据库已存在则打开,没有则按照路径参数创建
若路径参数相同,不会重复创建,
若路径参数相同,返回数据库单例,并且自动丢弃其它参数
只有路径参数是必须的,其他的可以再改(具体细节阅读文档)
_database = await openDatabase(path,//相当于在某一路径新建 .xls文件
// 以下参数都可以不写,不写的话,该方法相当于创建一个空的.xls文件
version: 1,
onCreate:(Database db, int newVersion)async{//第一张表的结构
await db.execute('''
CREATE TABLE USER_TABLE(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
password TEXT,
age INTEGER)
''');
}
);
第三步 建表
大多数的方式是第二步建库和建表一并完成,上文在第二步中也是这么写的,这里再单独多写一步建表
Future<void> creattab()async{
_database.execute(建表的sql语句);
}