Flutter数据库操作插件db_lib的使用
Flutter数据库操作插件db_lib的使用
在本篇教程中,我们将介绍如何使用 db_lib
插件进行数据库操作。db_lib
是一个用于简化数据库操作的库,适用于移动端和Web端。
安装 db_lib
首先,在项目的 pubspec.yaml
文件中添加 db_lib
的依赖:
dependencies:
db_lib: ^1.0.0
然后运行 flutter pub get
来安装依赖。
初始化数据库
在项目中初始化数据库实例。我们可以通过创建一个单例类来实现这一点:
import 'package:db_lib/db_lib.dart';
class DatabaseHelper {
static final _databaseHelper = DatabaseHelper._internal();
factory DatabaseHelper() => _databaseHelper;
DatabaseHelper._internal();
Database? _database;
Future<Database> get database async {
if (_database != null) return _database!;
_database = await initializeDatabase();
return _database!;
}
Future<Database> initializeDatabase() async {
// 获取数据库文件路径
String path = await getDatabasesPath();
return openDatabase(
"$path/my_database.db",
version: 1,
onCreate: (db, version) async {
// 创建表
await db.execute(
"CREATE TABLE my_table(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
);
},
);
}
}
插入数据
使用 DatabaseHelper
类插入数据到数据库表中:
Future<void> insertData(String name, int age) async {
final db = await DatabaseHelper().database;
await db.insert(
'my_table',
{'name': name, 'age': age},
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
查询数据
查询数据库表中的数据:
Future<List<Map<String, dynamic>>> getData() async {
final db = await DatabaseHelper().database;
return await db.query('my_table');
}
更新数据
更新数据库表中的数据:
Future<int> updateData(int id, String name, int age) async {
final db = await DatabaseHelper().database;
return await db.update(
'my_table',
{'name': name, 'age': age},
where: "id = ?",
whereArgs: [id],
);
}
删除数据
删除数据库表中的数据:
Future<int> deleteData(int id) async {
final db = await DatabaseHelper().database;
return await db.delete(
'my_table',
where: "id = ?",
whereArgs: [id],
);
}
更多关于Flutter数据库操作插件db_lib的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库操作插件db_lib的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
db_lib
是一个用于 Flutter 的数据库操作插件,它简化了与本地数据库的交互。以下是如何使用 db_lib
插件进行数据库操作的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 db_lib
插件的依赖:
dependencies:
flutter:
sdk: flutter
db_lib: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化数据库
在使用 db_lib
之前,你需要初始化数据库。通常,你可以在应用的 main
函数中进行初始化。
import 'package:db_lib/db_lib.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await DbLib.init('my_database.db'); // 初始化数据库,指定数据库名称
runApp(MyApp());
}
3. 创建表
你可以使用 DbLib
提供的 execute
方法来执行 SQL 语句来创建表。
void createTable() async {
await DbLib.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''');
}
4. 插入数据
你可以使用 DbLib
的 insert
方法来插入数据。
void insertUser() async {
Map<String, dynamic> user = {
'name': 'John Doe',
'age': 30,
};
await DbLib.insert('users', user);
}
5. 查询数据
你可以使用 DbLib
的 query
方法来查询数据。
void queryUsers() async {
List<Map<String, dynamic>> users = await DbLib.query('users');
users.forEach((user) {
print('User: ${user['name']}, Age: ${user['age']}');
});
}
6. 更新数据
你可以使用 DbLib
的 update
方法来更新数据。
void updateUser() async {
Map<String, dynamic> updatedUser = {
'name': 'Jane Doe',
'age': 25,
};
await DbLib.update('users', updatedUser, where: 'id = ?', whereArgs: [1]);
}
7. 删除数据
你可以使用 DbLib
的 delete
方法来删除数据。
void deleteUser() async {
await DbLib.delete('users', where: 'id = ?', whereArgs: [1]);
}
8. 关闭数据库
在应用退出时,你可以选择关闭数据库。
void closeDatabase() async {
await DbLib.close();
}
9. 完整示例
以下是一个完整的示例,展示了如何使用 db_lib
进行数据库操作:
import 'package:flutter/material.dart';
import 'package:db_lib/db_lib.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await DbLib.init('my_database.db');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('DB Lib Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: createTable,
child: Text('Create Table'),
),
ElevatedButton(
onPressed: insertUser,
child: Text('Insert User'),
),
ElevatedButton(
onPressed: queryUsers,
child: Text('Query Users'),
),
ElevatedButton(
onPressed: updateUser,
child: Text('Update User'),
),
ElevatedButton(
onPressed: deleteUser,
child: Text('Delete User'),
),
ElevatedButton(
onPressed: closeDatabase,
child: Text('Close Database'),
),
],
),
),
),
);
}
void createTable() async {
await DbLib.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''');
}
void insertUser() async {
Map<String, dynamic> user = {
'name': 'John Doe',
'age': 30,
};
await DbLib.insert('users', user);
}
void queryUsers() async {
List<Map<String, dynamic>> users = await DbLib.query('users');
users.forEach((user) {
print('User: ${user['name']}, Age: ${user['age']}');
});
}
void updateUser() async {
Map<String, dynamic> updatedUser = {
'name': 'Jane Doe',
'age': 25,
};
await DbLib.update('users', updatedUser, where: 'id = ?', whereArgs: [1]);
}
void deleteUser() async {
await DbLib.delete('users', where: 'id = ?', whereArgs: [1]);
}
void closeDatabase() async {
await DbLib.close();
}
}