You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
2 years ago
|
import 'dart:io';
|
||
|
|
||
|
import 'package:flustars/flustars.dart';
|
||
|
import 'package:path_provider/path_provider.dart';
|
||
|
import 'package:project_telephony/model/send_number_model.dart';
|
||
|
import 'package:sqflite/sqflite.dart';
|
||
|
import 'package:path/path.dart';
|
||
|
|
||
|
class DBManager {
|
||
|
/// 数据库名
|
||
|
final String _dbName = "dbName";
|
||
|
|
||
|
/// 数据库版本
|
||
|
final int _version = 1;
|
||
|
|
||
|
static final DBManager _instance = DBManager._();
|
||
|
|
||
|
factory DBManager() {
|
||
|
return _instance;
|
||
|
}
|
||
|
|
||
|
DBManager._();
|
||
|
|
||
|
static Database? _db;
|
||
|
|
||
|
Future<Database> get db async {
|
||
|
return _db ??= await _initDB();
|
||
|
}
|
||
|
|
||
|
/// 初始化数据库
|
||
|
Future<Database> _initDB() async {
|
||
|
Directory directory = await getApplicationDocumentsDirectory();
|
||
|
String path = join(directory.path, _dbName);
|
||
|
return await openDatabase(
|
||
|
path,
|
||
|
version: _version,
|
||
|
onCreate: _onCreate,
|
||
|
onUpgrade: _onUpgrade,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/// 创建表
|
||
|
Future _onCreate(Database db, int version) async {
|
||
|
const String sql = """
|
||
|
CREATE TABLE SendNumber(
|
||
|
id INTEGER primary key AUTOINCREMENT,
|
||
|
sendNumber TEXT,
|
||
|
createdAt datetime
|
||
|
)
|
||
|
""";
|
||
|
return await db.execute(sql);
|
||
|
}
|
||
|
|
||
|
/// 更新表
|
||
|
Future _onUpgrade(Database db, int oldVersion, int newVersion) async {}
|
||
|
|
||
|
/// 保存数据
|
||
|
Future saveData(SendNumber sendNumber) async {
|
||
|
Database database = await db;
|
||
|
return await database.insert("SendNumber", sendNumber.toJson());
|
||
|
}
|
||
|
|
||
|
/// 使用SQL保存数据
|
||
|
Future saveDataBySQL(SendNumber sendNumber) async {
|
||
|
const String sql = """
|
||
|
INSERT INTO SendNumber(sendNumber,createdAt) values(?,?)
|
||
|
""";
|
||
|
Database database = await db;
|
||
|
return await database.rawInsert(sql, [sendNumber.sendNumber, sendNumber.createdAt]);
|
||
|
}
|
||
|
|
||
|
/// 查询全部数据
|
||
|
Future<List<SendNumber>?> findAll() async {
|
||
|
Database? database = await db;
|
||
|
List<Map<String, Object?>> result = await database.query("SendNumber");
|
||
|
if (result.isNotEmpty) {
|
||
|
return result.map((e) => SendNumber.fromJson(e)).toList();
|
||
|
} else {
|
||
|
return [];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
///条件查询
|
||
|
Future<List<SendNumber>?> find(String sendNumber) async {
|
||
|
Database database = await db;
|
||
|
List<Map<String, Object?>> result =
|
||
|
await database.query("SendNumber", where: "sendNumber=?", whereArgs: [sendNumber]);
|
||
|
if (result.isNotEmpty) {
|
||
|
return result.map((e) => SendNumber.fromJson(e)).toList();
|
||
|
} else {
|
||
|
return [];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// 修改
|
||
|
Future<int> update(SendNumber sendNumber) async {
|
||
|
Database database = await db;
|
||
|
sendNumber.createdAt = DateUtil.formatDate(DateTime.now());
|
||
|
int count =
|
||
|
await database.update("SendNumber", sendNumber.toJson(), where: "sendNumber=?", whereArgs: [sendNumber.sendNumber]);
|
||
|
return count;
|
||
|
}
|
||
|
}
|