bool DataStorage::connect() { database = QSqlDatabase::addDatabase(myType); database.setHostName(myServer); database.setPort(myPort); database.setDatabaseName(myDatabase); database.setUserName(myUser); database.setPassword(myPassword); if (!database.open()) { qFatal("%s\n",database.lastError().text().toLatin1().data()); return false; } qDebug() << "DataStorage:: Connect to database success"; return checkDbVersion(); }
MojErr MojDb::open(const MojChar* path, MojDbStorageEngine* engine) { MojAssert(path); MojLogTrace(s_log); MojErr err = requireNotOpen(); MojErrCheck(err); MojLogInfo(s_log, _T("opening: '%s'..."), path); MojAutoCloser<MojDb> closer(this); m_isOpen = true; // check the database version number and bail if there's a mismatch err = checkDbVersion(path); MojErrCheck(err); // engine if (engine == NULL) { err = createEngine(); MojErrCheck(err); MojAssert(m_storageEngine.get()); err = m_storageEngine->configure(m_conf); MojErrCheck(err); err = m_storageEngine->open(path); MojErrCheck(err); } else { m_storageEngine.reset(engine); } MojDbReq req; err = req.begin(this, true); MojErrCheck(err); // db MojLogInfo(s_log, _T("Open Database: '%s'"), ObjDbName); err = m_storageEngine->openDatabase(ObjDbName, req.txn(), m_objDb); MojErrCheck(err); MojAssert(m_objDb.get()); // seq MojLogInfo(s_log, _T("Open Database: '%s'"), IdSeqName); err = m_storageEngine->openSequence(IdSeqName, req.txn(), m_idSeq); MojErrCheck(err); MojAssert(m_idSeq.get()); // kinds MojLogInfo(s_log, _T("Open Kind Engine")); err = m_kindEngine.open(this, req); MojLogInfo(s_log, _T("Kind Opened...")); MojErrCheck(err); // perms MojLogInfo(s_log, _T("Open Permissions")); err = m_permissionEngine.open(m_conf, this, req); MojErrCheck(err); // quota err = m_quotaEngine.open(m_conf, this, req); MojErrCheck(err); err = req.end(); MojErrCheck(err); // idgen err = m_idGenerator.init(); MojErrCheck(err); closer.release(); MojLogInfo(s_log, _T("open completed")); return MojErrNone; }