From d464356b2892c59f5b44fcb262b7183bb2ae4e35 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 13 Dec 2022 10:27:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E7=94=A8=E6=88=B7=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=A1=A8=E6=94=B9=E5=88=B0=E5=88=9B=E5=BB=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=97=B6=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/HGPdtToolDb/HGPdtToolDbImpl.cpp | 72 ++++++++++++++++++++++-------- db/HGPdtToolDb/HGPdtToolDbImpl.hpp | 1 - db/database_cfg.txt | 3 +- 3 files changed, 55 insertions(+), 21 deletions(-) diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp index e3ba81b..2d9d07c 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.cpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.cpp @@ -151,8 +151,7 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const return HGPDTTOOLDB_ERR_WRONG_PASSWORD; } - if (0 != CreateUserConfigTable(sql, userName) || 0 != CreateMainTestTable(sql) - || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql) + if (0 != CreateMainTestTable(sql) || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql) || 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql) || 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql)) { @@ -309,10 +308,34 @@ HGResult HGPdtToolDbUserMgrImpl::CreateUser(const HGChar* userName, const HGChar return HGBASE_ERR_FAIL; } + // 事务开始 + int ret = mysql_query(m_sql, "begin;"); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + char sqlCmd[1024] = {0}; sprintf(sqlCmd, "insert into user_list (user, password) values ('%s', password('%s'));", userName, defPwd); - int ret = mysql_query(m_sql, sqlCmd); - return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; + ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + sprintf(sqlCmd, "create table %s_config (config_key varchar(40) not null primary key, config_value text);", userName); + ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + // 事务结束 + ret = mysql_query(m_sql, "commit;"); + assert(0 == ret); + return HGBASE_ERR_OK; } HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName) @@ -339,13 +362,34 @@ HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName) return HGBASE_ERR_FAIL; } - char sqlCmd[1024] = { 0 }; - sprintf(sqlCmd, "drop table %s_config;", userName); - mysql_query(m_sql, sqlCmd); + // 事务开始 + int ret = mysql_query(m_sql, "begin;"); + if (0 != ret) + { + return HGBASE_ERR_FAIL; + } + char sqlCmd[1024] = { 0 }; sprintf(sqlCmd, "delete from user_list where user = '%s';", userName); - int ret = mysql_query(m_sql, sqlCmd); - return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; + ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + sprintf(sqlCmd, "drop table %s_config;", userName); + ret = mysql_query(m_sql, sqlCmd); + if (0 != ret) + { + mysql_query(m_sql, "rollback;"); + return HGBASE_ERR_FAIL; + } + + // 事务结束 + ret = mysql_query(m_sql, "commit;"); + assert(0 == ret); + return HGBASE_ERR_OK; } HGResult HGPdtToolDbUserMgrImpl::SetPassword(const HGChar* userName, const HGChar* pwd) @@ -742,16 +786,6 @@ std::string HGPdtToolDbUserMgrImpl::GetAuthString(MYSQL* sql, const HGChar* pwd) return authString; } -int HGPdtToolDbUserMgrImpl::CreateUserConfigTable(MYSQL* sql, const HGChar* user) -{ - assert(NULL != sql); - assert(NULL != user && 0 != *user); - - char sqlCmd[1024] = {0}; - sprintf(sqlCmd, "create table if not exists %s_config (config_key varchar(40) not null primary key, config_value text);", user); - return mysql_query(sql, sqlCmd); -} - int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql) { assert(NULL != sql); diff --git a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp index 247d29b..614bfc5 100644 --- a/db/HGPdtToolDb/HGPdtToolDbImpl.hpp +++ b/db/HGPdtToolDb/HGPdtToolDbImpl.hpp @@ -36,7 +36,6 @@ private: static std::string GetPassword(MYSQL* sql, const HGChar* userName); static std::string GetAuthString(MYSQL* sql, const HGChar* pwd); - int CreateUserConfigTable(MYSQL* sql, const HGChar *user); int CreateMainTestTable(MYSQL *sql); int CreateInitInspTestTable(MYSQL* sql); int CreateInitInspDescTable(MYSQL* sql); diff --git a/db/database_cfg.txt b/db/database_cfg.txt index a96e7df..a9b7a8a 100644 --- a/db/database_cfg.txt +++ b/db/database_cfg.txt @@ -4,4 +4,5 @@ 4.grant all privileges on huago_production_tool.* to 'huago'@'%'; 5.use huago_production_tool; 6.create table user_list (user varchar(20) not null primary key, password text); -7.insert into user_list (user, password) values ('root', password('123456')); \ No newline at end of file +7.insert into user_list (user, password) values ('root', password('123456')); +8.create table root_config (config_key varchar(40) not null primary key, config_value text); \ No newline at end of file