嗨,伙计们,我是Flutter的新手,现在有实习生。
所以我在这里有3个表,它们是项目数据库是主要的,组数据库,类别数据库。
如果项目数据库正在使用该组,我应该如何防止用户删除组数据库,因为该组已在项目数据库中使用?
如果有人能指导我,那就太好了,因为我对此完全陌生,而且因为实习生的关系,我必须尽快完成它。
import 'dart:async';
import 'dart:io' as io;
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path_provider/path_provider.dart';
import 'package:ezystock/model/item_model.dart';
import 'package:ezystock/model/group_model.dart';
import 'package:ezystock/model/category_model.dart';
class DBHelper {
static Database _db;
static const String DB_NAME = 'database.db';
Future<Database> get db async {
if (_db != null) {
return _db;
}
_db = await initDb();
return _db;
}
initDb() async {
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, DB_NAME);
var db = await openDatabase(path, version: 1, onCreate: _onCreate);
return db;
}
_onCreate(Database db, int version) async {
await db.execute("CREATE TABLE 'item' ('id' INTEGER PRIMARY KEY, 'code' TEXT, 'description' TEXT,'cost' REAL,'price' REAL,'category' TEXT,'group' TEXT)");
await db.execute("CREATE TABLE 'group' ('id' INTEGER PRIMARY KEY, 'code' TEXT, 'description' TEXT)");
await db.execute("CREATE TABLE 'category' ('id' INTEGER PRIMARY KEY, 'code' TEXT, 'description' TEXT)");
}
//Category
Future<Category> saveCategory(Category category) async {
var dbClient = await db;
category.id = await dbClient.insert("category", category.toMap());
return category;
}
Future<List<Category>> getCategory() async {
var dbClient = await db;
List<Map> maps = await dbClient.query("category", columns: ["id", "code","description"]);
//List<Map> maps = await dbClient.rawQuery("SELECT * FROM $TABLE");
List<Category> category = [];
if (maps.length > 0) {
for (int i = 0; i < maps.length; i++) {
category.add(Category.fromMap(maps[i]));
}
}
return category;
}
Future<int> deleteCategory(int id) async {
var dbClient = await db;
return await dbClient.delete("category", where: 'id = ?', whereArgs: [id]);
}
Future<int> updateCategory(Category category) async {
var dbClient = await db;
return await dbClient.update("category", category.toMap(),
where: 'id = ?', whereArgs: [category.id]);
}
//Group
Future<Group> saveGroups(Group group) async {
var dbClient = await db;
group.id = await dbClient.insert("group", group.toMap());
return group;
}
Future<List<Group>> getGroups() async {
var dbClient = await db;
List<Map> maps = await dbClient.query("group", columns: ["id", "code","description"]);
//List<Map> maps = await dbClient.rawQuery("SELECT * FROM $TABLE");
List<Group> groups = [];
if (maps.length > 0) {
for (int i = 0; i < maps.length; i++) {
groups.add(Group.fromMap(maps[i]));
}
}
return groups;
}
Future<int> deleteGroups(int id) async {
var dbClient = await db;
List<Map> items = await dbClient.query("item", where: 'group = ?', whereArgs: [id]);
if (items.length > 0) {
return await dbClient.delete("group", where: 'id = ?', whereArgs: [id]);
} else {
}
}
Future<int> updateGroups(Group group) async {
var dbClient = await db;
return await dbClient.update("group", group.toMap(),
where: 'id = ?', whereArgs: [group.id]);
}
//items
Future<Items> saveItems(Items items) async {
var dbClient = await db;
items.id = await dbClient.insert("item", items.toMap());
return items;
}
Future<List<Items>> getItems() async {
var dbClient = await db;
List<Map> maps = await dbClient.query("item", columns: ["id", "code","description","cost","price","category","group"]);
//List<Map> maps = await dbClient.rawQuery("SELECT * FROM $TABLE");
List<Items> groups = [];
if (maps.length > 0) {
for (int i = 0; i < maps.length; i++) {
groups.add(Items.fromMap(maps[i]));
}
}
return groups;
}
Future<int> deleteItems(int id) async {
var dbClient = await db;
return await dbClient.delete("item", where: 'id = ?', whereArgs: [id]);
}
Future<int> updateItems(Items items) async {
var dbClient = await db;
return await dbClient.update("item", items.toMap(),
where: 'id = ?', whereArgs: [items.id]);
}
Future close() async {
var dbClient = await db;
dbClient.close();
}
}发布于 2021-10-04 05:11:29
答案是:不提供任何方法来删除group表。所以删除下面的代码:
Future<int> deleteGroups(int id) async {
var dbClient = await db;
List<Map> items = await dbClient.query("item", where: 'group = ?', whereArgs: [id]);
if (items.length > 0) {
return await dbClient.delete("group", where: 'id = ?', whereArgs: [id]);
} else {
}https://stackoverflow.com/questions/69430451
复制相似问题