Flutter数据库连接插件mysql1_ext的使用
Flutter数据库连接插件mysql1_ext的使用
mysql1_ext
是一个用于 Dart 编程语言的 MySQL 驱动程序。它可以在 Flutter 和服务器上运行。
这个库旨在为 MySQL 提供易于使用的接口。mysql1_ext
起源于 mysql1_dart
的一个分支。
使用方法
连接到数据库
var settings = new ConnectionSettings(
host: 'localhost',
port: 3306,
user: 'bob',
password: 'wibble',
db: 'mydb'
);
var conn = await MySqlConnection.connect(settings);
执行带参数的查询
var userId = 1;
var results = await conn.query('select name, email from users where id = ?', [userId]);
使用查询结果
for (var row in results) {
print('Name: ${row[0]}, email: ${row[1]}');
}
插入数据
var result = await conn.query('insert into users (name, email, age) values (?, ?, ?)', ['Bob', 'bob@bob.com', 25]);
插入查询的结果将是空的,但如果表中有自动递增列,则会包含一个 ID:
print("New user's id: ${result.insertId}");
执行带有多个参数集的查询
var results = await query.queryMulti(
'insert into users (name, email, age) values (?, ?, ?)',
[['Bob', 'bob@bob.com', 25],
['Bill', 'bill@bill.com', 26],
['Joe', 'joe@joe.com', 37]]);
更新数据
await conn.query(
'update users set age=? where name=?',
[26, 'Bob']);
新功能
增加了支持CRUD操作的新函数
这个新函数允许参数化请求以减少对MySQL数据库的字符串转义。
await conn.execute('SELECT * FROM sessions WHERE session_id=:sid LIMIT 1', {'sid':'THIS IS SAMPLE SESSION'});
增加了连接池支持
var settings = new ConnectionSettings(
host: 'localhost',
port: 3306,
user: 'bob',
password: 'wibble',
db: 'mydb'
);
var conn = await MySqlConnectionPool.connect(settings);
增加了Results上的asMap(Function)
Flutter Web
该包通过套接字连接到数据库。Web平台不支持套接字,因此此包在Flutter Web上无法工作。
示例代码
以下是一个完整的示例代码,展示了如何使用 mysql1_ext
插件进行数据库操作。
import 'dart:async';
import 'package:mysql1_ext/mysql1_ext.dart';
Future<void> main() async {
// 打开一个连接(测试数据库应已存在)
final conn = await MySqlConnection.connect(
ConnectionSettings(
user: 'root',
db: 'testdb',
password: 'secret',
),
);
// 创建一个表
await conn.query(
'CREATE TABLE users (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, '
'name varchar(255), email varchar(255), age int)',
);
// 插入一些数据
final result = await conn.query(
'insert into users (name, email, age) values (?, ?, ?)',
['Bob', 'bob@bob.com', 25],
);
print('Inserted row id=${result.insertId}');
// 使用参数化查询查询数据库
final results = await conn.query(
'select name, email, age from users where id = ?',
[result.insertId],
);
for (final row in results) {
print('Name: ${row[0]}, email: ${row[1]} age: ${row[2]}');
}
// 更新一些数据
await conn.query('update users set age=? where name=?', [26, 'Bob']);
// 再次使用参数化查询查询数据库
final results2 = await conn.query(
'select name, email, age from users where id = ?',
[result.insertId],
);
for (final row in results2) {
print('Name: ${row[0]}, email: ${row[1]} age: ${row[2]}');
}
// 最后关闭连接
await conn.close();
}
更多关于Flutter数据库连接插件mysql1_ext的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复