Итак, у меня есть класс DBProvider, который создает новый экземпляр всякий раз, когда он еще не инициализирован. В настоящее время база данных содержит 8 таблиц, которые создаются в 1 запросе (то же самое происходит, когда есть только 1 таблица). Затем я пытаюсь получить одну из таблиц, но каждый раз не удается найти такую таблицу.
Это более короткая версия моего DBProvider
class DBProvider {
DBProvider._();
static final DBProvider db = DBProvider._();
static Database _database;
Future<Database> get database async {
if (_database != null)
return _database;
// if _database is null we instantiate it
_database = await initDB();
return _database;
}
static const tableProject = """
CREATE TABLE IF NOT EXISTS Project (
id TEXT PRIMARY KEY,
managerId TEXT,
consultantID TEXT
name TEXT,
description TEXT,
created TEXT,
deadline TEXT
);""";
static const tableAudit = """
CREATE TABLE IF NOT EXISTS Audit (
id TEXT PRIMARY key,
projectId TEXT,
timeTrackId TEXT,
jsonChanges TEXT,
date TEXT,
employeeId TEXT
);""";
static const tableEmployee = """
CREATE TABLE IF NOT EXISTS Employee (
id TEXT PRIMARY key,
fullName TEXT,
managementLogonAccess INTEGER
);""";
static const tableJobPosition = """
CREATE TABLE IF NOT EXISTS JobPosition (
id TEXT PRIMARY KEY,
name TEXT
);""";
static const tableWorkType = """
CREATE TABLE IF NOT EXISTS WorkType (
id TEXT PRIMARY key,
name TEXT
);""";
static const tableAssignedJobPosition = """
CREATE TABLE IF NOT EXISTS AssignedJobPosition (
employeeId TEXT,
positionId TEXT
);""";
static const tableTimeTrack = """
CREATE TABLE IF NOT EXISTS TimeTrack (
id TEXT PRIMARY key,
timeSpan INTEGER,
employeeId TEXT,
projectId TEXT,
workType TEXT,
note TEXT,
date TEXT
);""";
static const tableAllowedWorkType = """
CREATE TABLE IF NOT EXISTS AllowedWorkType (
projectId TEXT,
workTypeId TEXT
);""";
Future<Database> initDB() async {
print("initDB executed");
//Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(await getDatabasesPath(), "core.db");
await deleteDatabase(path);
return await openDatabase(path, version: 2,
onCreate: (Database db, int version) async {
await db.execute(
tableEmployee +
tableAudit +
tableProject +
tableJobPosition +
tableWorkType +
tableAssignedJobPosition +
tableTimeTrack +
tableAllowedWorkType
);
});
}
///get all Projects
Future/*<List<Project>>*/ getAllProjects() async{
final db = await database;
return await db.query("Project");
/*var res =
return res.isNotEmpty ? res.map((c) => Project.fromMap(c, false)).toList() : [];*/
}
Впоследствии я называю это в основном следующим образом:
var res = await DBProvider.db.getAllProjects();
print(res);