#include "modelmgrdb.h" #include "gensql.h" #include "WheelModel.h" #include #include ModelMgrDB::ModelMgrDB(const QString& dbName, const QString& dbType) //:DataBaseSql(dbName, dbType) { m_DBType = dbType; if (dbType == "QSQLITE") { db = new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", dbName)); db->setDatabaseName(dbName); } else if (dbType == "QMYSQL") { db = new QSqlDatabase(QSqlDatabase::addDatabase("QMYSQL", dbName)); } } ModelMgrDB::~ModelMgrDB() { if (db->isOpen()) { db->close(); } delete db; db = NULL; } bool ModelMgrDB::openDB() { return db->open(); } void ModelMgrDB::closeDB() { db->close(); } bool ModelMgrDB::InitDatabase() { if (!db->open()) { return false; } QVariantMap vMap; vMap.insert(_MD_MODEL, "VARCHAR(32)");//model 模型名称 vMap.insert(_MD_DIAMETER, "INT(100)");//直径 vMap.insert(_MD_HIGHT, "INT(100)");//高度 vMap.insert("picpath", "VARCHAR(32)"); vMap.insert(_MD_ROTATE, "INT(100)"); if (!CreatTable("modelTable", _MD_PRIMARY_KEY, vMap)) { return false; } return true; } bool ModelMgrDB::CreatTable(QString m_tableName, QString m_primaty, QVariantMap m_map) { QString strSql = gensql::genCreateTabel(m_tableName, m_primaty, "INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL", m_map); QSqlQuery sql = db->exec(strSql); QSqlError err = sql.lastError(); int nType = err.type(); if (nType != QSqlError::NoError) return false; return true; } bool ModelMgrDB::addData(QVariantMap m_map) { return InsertOneData("modelTable", m_map); } bool ModelMgrDB::InsertOneData(QString m_tableName, QVariantMap m_map) { if (m_tableName.isEmpty() || m_map.empty()) { return false; } QString strSql; strSql = gensql::genInsertData(m_tableName, m_map); qry = db->exec(strSql); QSqlError bflags = qry.lastError(); int nType = bflags.type(); QString str = db->databaseName(); if (db->lastError().isValid()) { return false; } return true; } bool ModelMgrDB::ReadOutData(QMap &m_MapString) { QString select_sql = QString("select * from ") + "modelTable"; QSqlQuery sql = db->exec(select_sql); QSqlError err = sql.lastError(); int t = err.type(); if (t != QSqlError::NoError) { return false; } m_MapString.clear(); while (sql.next()) { WheelModel * pModel = new WheelModel; pModel->m_strModelID = sql.value(_MD_MODEL).toString(); pModel->m_dDiameter = sql.value(_MD_DIAMETER).toDouble(); pModel->m_dHeight = sql.value(_MD_HIGHT).toDouble(); pModel->m_strPath = sql.value("picpath").toString(); pModel->m_nRotate = sql.value(_MD_ROTATE).toInt(); m_MapString.insert(pModel->m_strModelID, pModel); } return true; } bool ModelMgrDB::DeleteModelData(QString m_modelName) { QString m_map = gensql::genClass(_MD_MODEL, m_modelName);//!>生成where条件语句 QString strSql = gensql::genDeleteData("modelTable", m_map); QString sqlstr = QString("delete"); db->exec(strSql); if (db->lastError().isValid()) { return false; } return true; } bool ModelMgrDB::UpdateModelData(QString m_modelName, QVariantMap m_map) { if (m_modelName.isEmpty() || m_map.empty()) { return false; } QString m_str = gensql::genClass(_MD_MODEL, m_modelName);//!>生成where条件语句 QString strSql = gensql::genUpdate("modelTable", m_map, m_str); db->exec(strSql); if (db->lastError().isValid()) { return false; } return true; }