#include "mbwatchuserdb.h"
|
#include <QSqlQuery>
|
#include <QSqlError>
|
#include <QRandomGenerator>
|
#include <QDebug>
|
|
CMBWatchUserDb::CMBWatchUserDb()
|
{
|
m_pMgr = NULL;
|
m_tableName = "TN_USER";
|
}
|
|
CMBWatchUserDb::~CMBWatchUserDb()
|
{
|
|
}
|
|
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();
|
QString svrFlag = query.value("CN_S_SERVER_FLAG").toString();
|
|
|
CMBWatchUser *pUser = new CMBWatchUser();
|
pUser->setLogin(login);
|
pUser->setSvrID(svrID);
|
pUser->setBackupDir(backupDir);
|
pUser->setSvrPath(svrPath);
|
pUser->setIsLogin(isLogin);
|
pUser->setSvrFlag(svrFlag);
|
|
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;
|
}
|