Flutter跨平台数据库SQLite鸿蒙化适配指南
摘要:ohos_sqlite3_demo是为OpenHarmony系统适配的Flutter SQLite组件,提供完整数据库操作功能。该组件支持内存/文件两种数据库模式,包含表创建、数据CRUD等核心功能,兼容OpenHarmony API 9+。通过Git仓库引入项目,提供与官方SQLite包一致的Dart API接口。组件经过鸿蒙平台测试验证,可满足Flutter应用在OpenHarmony上

插件介绍
ohos_sqlite3_demo 是一个专为OpenHarmony系统适配的Flutter SQLite数据库组件,基于官方 sqlite3 包进行鸿蒙化定制修改。该组件提供了完整的SQLite数据库操作能力,支持内存数据库和文件数据库两种模式,适用于需要在OpenHarmony平台上进行本地数据存储的Flutter应用开发。
主要功能特点:
- 支持SQLite核心数据类型和SQL语法
- 提供内存数据库和文件数据库两种存储模式
- 支持表创建、数据插入、查询、更新和删除等基本操作
- 兼容OpenHarmony API 9+版本
- 提供简洁易用的Dart API接口
该组件通过自定义的Git仓库进行分发,确保在OpenHarmony平台上的兼容性和稳定性。
包的引入
由于该三方库为OpenHarmony定制修改版本,需要通过Git形式引入。在项目的 pubspec.yaml 文件中,添加以下依赖配置(使用AtomGit替代GitCode):
dependencies:
sqlite3: ^1.11.2
# 添加依赖覆盖,使用OpenHarmony适配版本
dependency_overrides:
sqlite3:
git:
url: "https://atomgit.com/flutter-openharmony/sqlite3-ohos.dart.git"
path: "sqlite3"
ref: "sqlite3-2.4.7-ohos"
sqlite3_flutter_libs:
git:
url: "https://atomgit.com/flutter-openharmony/sqlite3-ohos.dart.git"
path: "sqlite3_flutter_libs"
ref: "sqlite3_flutter_libs-0.5.25-ohos"
配置完成后,执行 flutter pub get 命令获取依赖包。
API调用示例
1. 内存数据库操作
以下示例展示了如何创建内存数据库、创建表、插入数据和查询数据:
import 'package:flutter/material.dart';
import 'package:sqlite3/sqlite3.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter SQLite Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: const HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
void _insertData() {
// 打开内存数据库
final db = sqlite3.openInMemory();
// 创建表
db.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
''');
// 插入数据
db.execute('INSERT INTO users (name) VALUES ("Alice")');
db.execute('INSERT INTO users (name) VALUES ("Bob")');
// 查询数据
final result = db.select('SELECT * FROM users');
for (final row in result) {
print('User: id=${row['id']}, name=${row['name']}');
}
// 关闭数据库连接
db.dispose();
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Home Screen')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _insertData,
child: const Text('Insert Data into SQLite'),
),
],
),
),
);
}
}
2. 文件数据库操作
以下示例展示了如何创建持久化的文件数据库:
import 'dart:io';
import 'package:sqlite3/sqlite3.dart';
import 'package:sqlite3_flutter_libs/sqlite3_flutter_libs.dart';
Future<void> initDatabase() async {
// 确保SQLite库已加载
await sqlite3FlutterLibs.loadLibrary();
// 获取数据库文件路径
final dbPath = Directory.current.path + '/my_database.db';
// 打开文件数据库
final db = sqlite3.open(dbPath);
// 创建表
db.execute('''
CREATE TABLE IF NOT EXISTS products (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
price REAL NOT NULL,
created_at INTEGER DEFAULT CURRENT_TIMESTAMP
);
''');
// 插入数据
db.execute(
'INSERT INTO products (name, price) VALUES (?, ?)',
['Flutter Book', 49.99]
);
// 查询数据
final result = db.select('SELECT * FROM products');
for (final row in result) {
print('Product: ${row['name']}, Price: ${row['price']}');
}
// 关闭数据库
db.dispose();
}
3. 参数化查询
使用参数化查询可以提高性能并防止SQL注入攻击:
void parameterizedQueryExample() {
final db = sqlite3.openInMemory();
db.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
);
''');
// 使用参数化插入
db.execute(
'INSERT INTO users (name, age) VALUES (?, ?)',
['Charlie', 30]
);
// 使用参数化查询
final age = 30;
final result = db.select(
'SELECT * FROM users WHERE age > ?',
[age]
);
for (final row in result) {
print('User: ${row['name']}, Age: ${row['age']}');
}
db.dispose();
}
文章总结
ohos_sqlite3_demo 是一个功能完善的Flutter SQLite数据库组件,专为OpenHarmony系统进行了适配优化。通过该组件,开发者可以在OpenHarmony平台上轻松实现本地数据存储功能,包括内存数据库和文件数据库两种模式。
该组件的主要优势包括:
- 提供简洁易用的Dart API,与官方SQLite包接口保持一致
- 支持完整的SQLite功能,满足大多数本地数据存储需求
- 经过OpenHarmony平台测试验证,确保兼容性和稳定性
- 通过AtomGit进行版本管理,方便开发者获取和更新
使用该组件时,需要注意以下几点:
- 确保在
pubspec.yaml中正确配置依赖覆盖,使用OpenHarmony适配版本 - 数据库操作完成后,及时调用
dispose()方法释放资源 - 对于文件数据库,注意处理好文件路径和权限问题
通过本文的介绍,相信开发者能够快速上手使用该组件,为OpenHarmony平台上的Flutter应用添加本地数据存储功能。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
更多推荐



所有评论(0)