flutter开发实战-本地SQLite数据存储
warning:
这篇文章距离上次修改已过182天,其中的内容可能已经有所变动。
import 'package:flutter/services.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class DatabaseHelper {
static DatabaseHelper _databaseHelper;
static Database _database;
DatabaseHelper._createInstance();
factory DatabaseHelper() {
if (_databaseHelper == null) {
_databaseHelper = DatabaseHelper._createInstance();
}
return _databaseHelper;
}
Future<Database> openDatabase() async {
if (_database == null) {
_database = await initializeDatabase();
}
return _database;
}
Future<Database> initializeDatabase() async {
// 获取数据库路径
var databasePath = await getDatabasesPath();
var path = join(databasePath, 'my_database.db');
// 打开或创建数据库
var database = await openDatabase(path, version: 1, onCreate: _createDb);
return database;
}
void _createDb(Database db, int version) async {
const String createTableSql = '''
CREATE TABLE my_table (
id INTEGER PRIMARY KEY,
name TEXT,
value TEXT
)
''';
await db.execute(createTableSql);
}
// 插入数据
Future<int> insertData(String name, String value) async {
Database db = await this.openDatabase();
var rawInsert = 'INSERT INTO my_table (name, value) VALUES (?, ?)';
int id = await db.rawInsert(rawInsert, [name, value]);
return id;
}
// 查询数据
Future<List<Map<String, dynamic>>> queryData() async {
Database db = await this.openDatabase();
var rawQuery = 'SELECT * FROM my_table';
List<Map<String, dynamic>> result = await db.rawQuery(rawQuery);
return result;
}
// 更新数据
Future<int> updateData(int id, String name, String value) async {
Database db = await this.openDatabase();
var rawUpdate = 'UPDATE my_table SET name = ?, value = ? WHERE id = ?';
int result = await db.rawUpdate(rawUpdate, [name, value, id]);
return result;
}
// 删除数据
Future<int> deleteData(int id) async {
Database db = await this.openDatabase();
var rawDelete = 'DELETE FROM my_table
评论已关闭