| | |
| | | #include "mbwatchuserdb.h" |
| | | #include <QSqlQuery> |
| | | #include <QSqlError> |
| | | #include <QRandomGenerator> |
| | | #include <QDebug> |
| | | |
| | | CMBWatchUserDb::CMBWatchUserDb() |
| | | { |
| | | m_pMgr = new CMBWatchUserMgr(); |
| | | m_pMgr = NULL; |
| | | m_tableName = "TN_WATCH_USER"; |
| | | } |
| | | |
| | | CMBWatchUserDb::~CMBWatchUserDb() |
| | | { |
| | | if( m_pMgr ){ |
| | | delete m_pMgr; |
| | | m_pMgr = NULL; |
| | | |
| | | } |
| | | |
| | | void CMBWatchUserDb::setUserMgr(CMBWatchUserMgr *pMgr) |
| | | { |
| | | m_pMgr = pMgr; |
| | | } |
| | | |
| | | QSqlDatabase CMBWatchUserDb::openDataBase() |
| | | { |
| | | quint32 value = QRandomGenerator::global()->generate(); |
| | | QSqlDatabase db; |
| | | if ( true == QSqlDatabase::contains(QString::number(value))) |
| | | { |
| | | db = QSqlDatabase::database(QString::number(value)); |
| | | } |
| | | else |
| | | { |
| | | db = QSqlDatabase::addDatabase("QSQLITE", QString::number(value)); |
| | | db.setDatabaseName(m_path); |
| | | } |
| | | |
| | | if (false == db.open()) |
| | | { |
| | | qDebug() << db.lastError().text(); |
| | | } |
| | | return db; |
| | | } |
| | | |
| | | void CMBWatchUserDb::closeDataBase(QString connectionName) |
| | | { |
| | | if( QSqlDatabase::contains(connectionName) ){ |
| | | QSqlDatabase::removeDatabase(connectionName); |
| | | } |
| | | } |
| | | |
| | | bool CMBWatchUserDb::execSql(QString sql, QString &errInfo) |
| | | { |
| | | QMutexLocker locker(&m_mutex); |
| | | |
| | | QString connectionName; |
| | | { |
| | | QSqlDatabase db = openDataBase(); |
| | | connectionName = db.connectionName(); |
| | | |
| | | QSqlQuery query(db); |
| | | query.prepare(sql); |
| | | |
| | | if( !query.exec()){ |
| | | errInfo = query.lastError().text(); |
| | | return false; |
| | | } |
| | | query.clear(); |
| | | } |
| | | |
| | | closeDataBase(connectionName); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMBWatchUserDb::execSql(QSqlDatabase &db, QString sql, QString &errInfo) |
| | | { |
| | | QSqlQuery query(db); |
| | | query.prepare(sql); |
| | | |
| | | if( !query.exec()){ |
| | | errInfo = query.lastError().text(); |
| | | return false; |
| | | } |
| | | query.clear(); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMBWatchUserDb::getTmpFiledSql(QString sql, QString &tmpValue, QString &errInfo) |
| | | { |
| | | QMutexLocker locker(&m_mutex); |
| | | |
| | | QString connectionName; |
| | | { |
| | | QSqlDatabase db = openDataBase(); |
| | | connectionName = db.connectionName(); |
| | | |
| | | QSqlQuery query(db); |
| | | query.prepare(sql); |
| | | |
| | | if( !query.exec()){ |
| | | errInfo = query.lastError().text(); |
| | | return false; |
| | | } |
| | | while(query.next()) |
| | | { |
| | | tmpValue = query.value("TmpFiled").toString(); |
| | | } |
| | | |
| | | query.clear(); |
| | | } |
| | | |
| | | closeDataBase(connectionName); |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMBWatchUserDb::exsitSql(QString sql, bool &bExsit, QString &errInfo) |
| | | { |
| | | QMutexLocker locker(&m_mutex); |
| | | |
| | | bExsit = false; |
| | | |
| | | QString connectionName; |
| | | { |
| | | QSqlDatabase db = openDataBase(); |
| | | connectionName = db.connectionName(); |
| | | |
| | | QSqlQuery query(db); |
| | | query.prepare(sql); |
| | | |
| | | if( !query.exec()){ |
| | | errInfo = query.lastError().text(); |
| | | return false; |
| | | } |
| | | // 获取大小 |
| | | int initialPos = query.at(); |
| | | int nCount = 0; |
| | | if (query.last()) |
| | | nCount = query.at() + 1; |
| | | else |
| | | nCount = 0; |
| | | query.seek(initialPos); |
| | | // end 获取大小 |
| | | if( nCount >= 1 ){ |
| | | bExsit = true; |
| | | } |
| | | |
| | | query.clear(); |
| | | } |
| | | |
| | | closeDataBase(connectionName); |
| | | return true; |
| | | } |
| | | |
| | | |
| | | bool CMBWatchUserDb::init(QString path,QString &errInfo) |
| | | { |
| | | m_path = path; |
| | | |
| | | m_pMgr->removeAll(); |
| | | |
| | | if( !queryDB(errInfo) ) |
| | | return false; |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMBWatchUserDb::loadDB(QSqlQuery &query) |
| | | { |
| | | while(query.next()) |
| | | { |
| | | QString login = query.value("CN_S_LOGIN").toString(); |
| | | QString svrID = query.value("CN_S_SERVER_ID").toString(); |
| | | QString backupDir = query.value("CN_S_BACKUP_DIR").toString(); |
| | | QString svrPath = query.value("CN_S_SERVER_PATH").toString(); |
| | | QString isLogin = query.value("CN_S_ISLOGIN").toString(); |
| | | |
| | | CMBWatchUser *pUser = new CMBWatchUser(); |
| | | pUser->setLogin(login); |
| | | pUser->setSvrID(svrID); |
| | | pUser->setBackupDir(backupDir); |
| | | pUser->setSvrPath(svrPath); |
| | | pUser->setIsLogin(isLogin); |
| | | |
| | | if( !m_pMgr->add(pUser) ){ |
| | | delete pUser; |
| | | pUser = NULL; |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | bool CMBWatchUserDb::queryDB(QString &errInfo) |
| | | { |
| | | QMutexLocker locker(&m_mutex); |
| | | |
| | | QString connectionName,sql; |
| | | |
| | | sql = QString("select * from %1 where CN_S_ISLOGIN='Y'").arg(m_tableName); |
| | | |
| | | { |
| | | QSqlDatabase db = openDataBase(); |
| | | connectionName = db.connectionName(); |
| | | |
| | | QSqlQuery query(db); |
| | | query.prepare(sql); |
| | | |
| | | if( !query.exec()){ |
| | | errInfo = query.lastError().text(); |
| | | return false; |
| | | } |
| | | |
| | | if(!loadDB(query)) |
| | | return false; |
| | | |
| | | query.clear(); |
| | | } |
| | | |
| | | closeDataBase(connectionName); |
| | | |
| | | return true; |
| | | } |