Flutter数据库连接插件quds_mysql的使用
Flutter数据库连接插件quds_mysql的使用
quds_mysql
是一个用于在 Flutter 应用程序中自动化的 MySQL 数据库连接插件。本文将通过示例代码详细介绍如何使用该插件。
如何使用
请查看 ./example
目录以获取示例代码。
1. 创建模型
模型类应扩展自 DbModel
类,并定义其模式。
class Note extends DbModel {
var title = StringField(columnName: 'title');
var content = StringField(columnName: 'content');
var isImportant = BoolField(columnName: 'isImportant');
[@override](/user/override)
List<FieldWithValue>? getFields() => [title, content, isImportant];
}
注意: 每个模型都有默认字段:
id
(自动递增整数字段)creationTime
(创建时自动设置)modificationTime
(创建时和每次更新操作时自动设置)
2. 创建表管理器
class NotesRepository extends DbRepository<Note> {
NotesRepository() : super(() => Note());
[@override](/user/override)
String get tableName => 'Notes';
}
如上所示,可以通过覆盖 tableName
属性来设置表名。
注意: 在 Repository 类构造函数中,应提供模型对象的创建函数。
NotesRepository NotesRepository = NotesRepository();
3. 增删改查(CRUD)操作
创建(插入)
单个插入
Note n = Note();
n.title.value = 'New note';
n.content.value = 'Note content, describe your self';
n.isImportant.value = ([true, false]..shuffle()).first;
await NotesRepository.insertEntry(n);
批量插入
await NotesRepository.insertCollection([n1,n2,n3,...]);
读取(查询)
var allNotes = await NotesRepository.select();
var importantNotes = await NotesRepository.select(where: (n) => n.isImportant.isTrue);
var importantRed = await NotesRepository.select(where: (n) => n.isImportant.isTrue);
更新
n.title = 'new title';
await NotesRepository.updateEntry(n);
删除
await NotesRepository.deleteEntry(n);
监控变化
要处理表中的变化,可以添加监听器:
NotesRepository.addEntryChangeListner((changeType, entry) {
switch (changeType) {
case EntryChangeType.Insertion:
// 新笔记已添加 (entry)
break;
case EntryChangeType.Deletion:
// (entry) 已被删除
break;
case EntryChangeType.Modification:
// (entry) 已被修改
break;
}
});
完整示例代码
以下是一个完整的示例代码,展示了如何使用 quds_mysql
插件进行数据库操作。
import 'package:quds_mysql/quds_mysql.dart';
Future<void> main() async {
my_db.DbHelper.mainDb = 'testdb';
my_db.DbHelper.dbUser = 'root';
my_db.DbHelper.dbPassword = '0';
my_db.DbHelper.port = 2020;
await Future.delayed(const Duration(seconds: 1));
var repo = StudentsRepository();
var std = Student();
var date = DateTime(2000);
print(date);
std.birthDate.value = date;
print(std.birthDate.value);
await repo.updateEntry(std);
print(std.birthDate.value);
int id = std.id.value!;
var std2 = await repo.loadEntryById(id);
print(std2!.birthDate.value?.toLocal());
await repo.updateEntry(std2);
var std3 = await repo.loadEntryById(id);
print(std3!.birthDate.value?.toLocal());
}
class Student extends DbModel {
var name = StringField(columnName: 'name');
var secondName = StringField(columnName: 'second_name');
var thirdName = StringField(columnName: 'third_name');
var familyName = StringField(columnName: 'family_name');
var mobile = StringField(columnName: 'mobile');
var identity = StringField(columnName: 'identity');
var deviceid = StringField(columnName: 'deviceid');
var schoolId = IntField(columnName: 'school_id');
var code = StringField(columnName: 'code');
var isActive = IntField(columnName: 'is_active');
var licenseType = IntField(columnName: 'license_type');
var typeApp = IntField(columnName: 'type_app');
var examCount = IntField(columnName: 'exam_count');
var fromApp = IntField(columnName: 'from_app');
var isDeleteDevice = IntField(columnName: 'is_delete_device');
var birthDate = DateTimeField(columnName: 'birth_date');
[@override](/user/override)
List<FieldWithValue>? getFields() => [
name,
secondName,
thirdName,
familyName,
mobile,
identity,
deviceid,
schoolId,
code,
isActive,
licenseType,
typeApp,
examCount,
fromApp,
isDeleteDevice,
birthDate
];
}
class StudentsRepository extends DbRepository<Student> {
static final StudentsRepository _instance = StudentsRepository._();
factory StudentsRepository() => _instance;
StudentsRepository._() : super(() => Student());
[@override](/user/override)
String get tableName => 'students';
}
更多关于Flutter数据库连接插件quds_mysql的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库连接插件quds_mysql的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quds_mysql
是一个用于在 Flutter 应用中连接和操作 MySQL 数据库的插件。它允许你直接从 Flutter 应用中执行 SQL 查询并与 MySQL 数据库进行交互。
以下是使用 quds_mysql
插件的基本步骤和示例代码:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 quds_mysql
插件的依赖:
dependencies:
flutter:
sdk: flutter
quds_mysql: ^1.0.0 # 请确保使用最新版本
然后,运行 flutter pub get
来安装依赖。
2. 导入库
在你的 Dart 文件中导入 quds_mysql
库:
import 'package:quds_mysql/quds_mysql.dart';
3. 连接到 MySQL 数据库
使用 MySQLConnection
类来连接到 MySQL 数据库。你需要提供数据库的主机名、端口、用户名、密码和数据库名称。
Future<void> connectToDatabase() async {
var conn = await MySQLConnection.createConnection(
host: 'localhost',
port: 3306,
userName: 'your_username',
password: 'your_password',
databaseName: 'your_database',
);
await conn.connect();
print('Connected to MySQL database');
}
4. 执行 SQL 查询
一旦连接到数据库,你可以使用 execute
方法来执行 SQL 查询。例如,执行一个简单的 SELECT
查询:
Future<void> fetchData() async {
var conn = await MySQLConnection.createConnection(
host: 'localhost',
port: 3306,
userName: 'your_username',
password: 'your_password',
databaseName: 'your_database',
);
await conn.connect();
var results = await conn.execute('SELECT * FROM your_table');
for (var row in results) {
print('Row: $row');
}
await conn.close();
}
5. 插入数据
你可以使用 execute
方法来插入数据:
Future<void> insertData() async {
var conn = await MySQLConnection.createConnection(
host: 'localhost',
port: 3306,
userName: 'your_username',
password: 'your_password',
databaseName: 'your_database',
);
await conn.connect();
await conn.execute(
'INSERT INTO your_table (column1, column2) VALUES (?, ?)',
['value1', 'value2'],
);
await conn.close();
}
6. 关闭连接
完成数据库操作后,记得关闭连接以释放资源:
await conn.close();
7. 处理异常
在执行数据库操作时,建议使用 try-catch
块来捕获和处理可能的异常:
try {
await conn.connect();
var results = await conn.execute('SELECT * FROM your_table');
for (var row in results) {
print('Row: $row');
}
} catch (e) {
print('Error: $e');
} finally {
await conn.close();
}