NetworkDB &NetworkDB::Instance() { if (ourInstance.isNull()) { ZLFile dir(databaseDirName()); dir.directory(true); ZLFile file(databaseDirName() + ZLibrary::FileNameDelimiter + DATABASE_NAME); ourInstance = new NetworkDB(file.physicalFilePath()); ourInstance->initDatabase(); } return *ourInstance; }
BooksDB &BooksDB::Instance() { AppLog("BooksDB::Instance"); if (ourInstance == 0) { ZLFile dir(databaseDirName()); dir.directory(true); ZLFile file(databaseDirName() + ZLibrary::FileNameDelimiter + DATABASE_NAME); AppLog("new BooksDB %s",file.physicalFilePath().c_str()); ourInstance = new BooksDB(file.physicalFilePath()); AppLog("initDatabase"); ourInstance->initDatabase(); } AppLog("Instance return *ourInstance"); return *ourInstance; }
bool BooksDB::initDatabase() { if (isInitialized()) { return true; } if (!open()) { return false; } myInitialized = true; ZLFile stateFile(databaseDirName() + ZLibrary::FileNameDelimiter + STATE_DATABASE_NAME); shared_ptr<DBCommand> cmd = SQLiteFactory::createCommand(BooksDBQuery::PREINIT_DATABASE, connection(), "@stateFile", DBValue::DBTEXT); ((DBTextValue&)*cmd->parameter("@stateFile").value()) = stateFile.physicalFilePath(); if (!cmd->execute()) { myInitialized = false; close(); return false; } shared_ptr<DBRunnable> runnable = new InitBooksDBRunnable(connection()); if (!executeAsTransaction(*runnable)) { myInitialized = false; close(); return false; } return true; }