Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}