Flutter数据库管理插件sqlite_utils的使用
Flutter数据库管理插件sqlite_utils的使用
sqlite_utils
1 |
该插件帮助扩展类以进行SQLite数据库操作。
Pub安装
在pubspec.yaml
文件中添加依赖:
dependencies:
sqlite_utils: ^最新版本号
然后运行以下命令安装依赖:
flutter pub get
API
初始化连接
var db = SqliteUtils(settings: {
'database': 'loop.db',
'tableMap': {
'table1':'id INTEGER PRIMARY KEY, nickname TEXT, telphone TEXT, createTime INTEGER, updateTime INTEGER',
'table2': 'id INTEGER PRIMARY KEY, title TEXT, titleId INTEGER',
},
'version': 1,
});
查询
var row = await db
.query('select * from table id=1');
print(row);
// db.close();
多表查询
var res = await db.getAll(
table: 'user tb1,upload tb2',
fields: 'tb2.fileSize',
where: 'tb2.id>0 and tb2.uid=tb1.id',
debug: true,
);
print(res);
获取单条数据
var row = await db.getOne(
table: 'table',
fields: '*',
where: {'email': 'xxx@google.com'},
);
print(row);
获取多条数据
var row = await db.getAll(
table: 'table',
fields: '*',
where: {
'email': 'xxx@dd.com',
'id': ['>', 1],
},
);
print(row);
插入数据
await db.insert(
table: 'table',
insertData: {
'telphone': '+113888888888',
'create_time': 1620577162252,
'update_time': 1620577162252,
},
);
批量插入数据
await db.insertAll(
table: 'table',
insertData: [
{
'telphone': '13888888888',
'create_time': 1111111,
'update_time': 12121212,
'email': 'teenagex@dd.com'
},
{
'telphone': '13881231238',
'create_time': 324234,
'update_time': 898981,
'email': 'xxx@dd.com'
}
]);
更新数据
await db.update(
table: 'table',
updateData:{
'telphone': '1231',
'create_time': 12,
'update_time': 12121212,
'email': 'teenagex@dd.com'
},
where:{
'id':1,
});
删除数据
await db.delete(
table:'table',
where: {'id':1}
);
统计数据
await db.count(
table: 'table',
fields: '*',
where: {
'id': ['>', 0]
},
);
完整示例
import 'dart:async';
import 'dart:math';
import 'package:sqlite_utils/sqlite_utils.dart';
Future main() async {
var rng = new Random();
final db = SqliteUtils(settings: {
'database': 'testDB.db',
'tableMap': {
'testTable':
'id INTEGER PRIMARY KEY, nickname TEXT, telphone TEXT, createTime INTEGER, updateTime INTEGER',
'table2': 'id INTEGER PRIMARY KEY, title TEXT, titleId INTEGER',
},
'version': 1,
});
// 插入一条数据
var res3 = await db.insert(
table: 'testTable',
insertData: {
'nickname': '中文测试-${rng.nextInt(100)}',
'telphone': '+113888888888',
'createTime': 1620577162252,
'updateTime': 1620577162252,
},
);
await db.close();
print(res3); // 最后插入的ID
// 查询一条数据
// var row1 = await db.getOne(
// table: 'testTable',
// fields: '*',
// where: {
// 'createTime': ['>', 1],
// },
// debug: true,
// );
// await db.close();
// print(row1); // 返回的数据行
// 查询多条数据
// var row2 = await db.getAll(
// table: 'testTable',
// fields: '*',
// where: {
// 'id': ['>', 1],
// },
// debug: true,
// );
// await db.close();
// print(row2); // 返回的数据列表
// 统计数据
// var row5 = await db.count(
// table: 'testTable',
// fields: '*',
// where: {
// 'id': ['>', 0]
// },
// debug: true,
// );
// print(row5);
// 删除数据
// var row9 = await db.delete(
// table: 'testTable',
// where: {
// 'id': 3
// },
// debug: true,
// );
// print(row9); // 删除的行数
// 更新数据
// var row10 = await db.update(
// table: 'testTable',
// updateData: {
// 'nickname': '想vvb-${rng.nextInt(100)}',
// },
// where: {
// 'id': 4,
// },
// debug: true,
// );
// print(row10); // 更新的受影响行数
// 批量插入数据
// var row11 = await db.insertAll(table: 'testTable', insertData: [
// {
// 'nickname': 'test-${rng.nextInt(100)}',
// 'telphone': '+113888888888',
// 'createTime': 1620577162252,
// 'updateTime': 1620577162252,
// },
// {
// 'nickname': 'test-${rng.nextInt(100)}',
// 'telphone': '+113888888888',
// 'createTime': 1620577162252,
// 'updateTime': 1620577162252,
// }
// ]);
// print(row11);
// 基础SQL查询
// var row12 = await db.query('SELECT * FROM testTable');
// print(row12);
// await db.close();
}
更多关于Flutter数据库管理插件sqlite_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter数据库管理插件sqlite_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用sqlite_utils
插件进行数据库管理的代码案例。sqlite_utils
是一个流行的Flutter插件,用于在Flutter应用中方便地管理SQLite数据库。
首先,确保你已经在pubspec.yaml
文件中添加了sqlite_utils
依赖:
dependencies:
flutter:
sdk: flutter
sqlite_utils: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
以下是一个简单的Flutter应用示例,演示如何使用sqlite_utils
插件创建数据库、创建表、插入数据、查询数据等操作:
import 'package:flutter/material.dart';
import 'package:sqlite_utils/sqlite_utils.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter SQLite Utils Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
late DatabaseHelper _dbHelper;
@override
void initState() {
super.initState();
_dbHelper = DatabaseHelper();
_dbHelper.initializeDatabase().then((_) {
// 初始化数据库后,可以插入一些初始数据
_dbHelper.insertData('users', {'name': 'Alice', 'age': 30});
_dbHelper.insertData('users', {'name': 'Bob', 'age': 25});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter SQLite Utils Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
List<Map<String, dynamic>> users = await _dbHelper.queryData('users');
print(users); // 打印查询结果
// 可以在这里更新UI来显示查询结果
},
child: Text('Query Users'),
),
),
);
}
}
class DatabaseHelper {
Database? _database;
Future<Database> initializeDatabase() async {
// 打开数据库连接
_database = await openDatabase(
join(await getDatabasesPath(), 'my_database.db'),
onCreate: (db, version) async {
// 当数据库首次创建时,创建表
await db.execute('CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)');
},
version: 1,
);
return _database!;
}
Future<void> insertData(String table, Map<String, dynamic> data) async {
// 插入数据
await _database!.insert(table, data);
}
Future<List<Map<String, dynamic>>> queryData(String table) async {
// 查询数据
List<Map<String, dynamic>> result = await _database!.query(table);
return result;
}
}
在这个示例中,我们做了以下几件事情:
- 添加依赖:在
pubspec.yaml
文件中添加了sqlite_utils
依赖。 - 初始化数据库:在
DatabaseHelper
类中,我们定义了initializeDatabase
方法来打开数据库连接,并在数据库首次创建时创建一个名为users
的表。 - 插入数据:定义了
insertData
方法来向users
表中插入数据。 - 查询数据:定义了
queryData
方法来查询users
表中的数据。 - UI交互:在
MyHomePage
类中,我们创建了一个按钮,当点击按钮时,会查询users
表中的数据并打印出来。
请注意,sqlite_utils
的实际包名和导入路径可能会有所不同,因此请确保使用正确的包名和路径。另外,由于Flutter和依赖库的不断更新,代码中的API调用和语法可能会有所变化,请参考最新的官方文档进行调整。