Răsfoiți Sursa

变更表:删除pre_apk字段

sat23 4 ani în urmă
părinte
comite
ff03a1207a

+ 163 - 67
CTSManager/CTSManager/Database.cpp

@@ -1,6 +1,21 @@
 #include "pch.h"
 #include "Database.h"
 
+VOID _dprintf(CHAR* pszStr, ...)
+{
+	const int LOGLEN = 3072;
+	char szData[LOGLEN] = { 0 };
+	_stprintf_s(szData, _T("[%s %s]\n\t"), _T("Db"), CTime::GetCurrentTime().Format(_T("%H:%M:%S")).GetString());
+	int len = strlen(szData);
+	va_list args;
+	va_start(args, pszStr);
+	_vsnprintf_s(szData + len, LOGLEN - len, LOGLEN - len, pszStr, args);
+	va_end(args);
+	if (szData[strlen(szData)-1] != '\n')
+		strcat_s(szData, "\n");
+	OutputDebugStringA(szData);
+}
+
 #define CHECKDB if (m_pConn == NULL || !m_bConnected) return FALSE
 
 char* CDatabase::m_spImage = NULL;
@@ -116,7 +131,7 @@ BOOL CDatabase::Init(std::string host, std::string user, std::string password, s
 	m_pError = mysql_error(m_pConn);
 	if (!mysql_real_connect(m_pConn, host.c_str(), user.c_str(), password.c_str(), db.c_str(), 0, NULL, 0)) {
 #ifdef _DEBUG
-		TRACE1(_T("mysql_real_connect error=%s\n"), m_pError ? m_pError: "");
+		_dprintf(_T("mysql_real_connect error=%s\n"), m_pError ? m_pError: "");
 #endif
 		return FALSE;
 	}
@@ -131,7 +146,7 @@ BOOL CDatabase::ExcuteSQL(std::string sql)
 
 	if (0 != mysql_query(m_pConn, sql.c_str())) {
 #ifdef _DEBUG
-		TRACE1(_T("ExcuteSQL error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("ExcuteSQL error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -147,7 +162,7 @@ BOOL CDatabase::InserProvider(const STProvider& provider)
 	_stprintf_s(szSql, INSER_PROVIDER, provider.name.c_str(), provider.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InserProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -162,7 +177,7 @@ BOOL CDatabase::InserProvider(std::string name, std::string note)
 	_stprintf_s(szSql, INSER_PROVIDER, name.c_str(), note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InserProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -177,7 +192,7 @@ BOOL CDatabase::DeleteProvider(std::string name)
 	_stprintf_s(szSql, DEL_PROVIDER, name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -192,7 +207,7 @@ BOOL CDatabase::UpdateProvider(std::string name, const STProvider& provider)
 	_stprintf_s(szSql, MOD_PROVIDER, provider.name.c_str(), provider.note.c_str(), name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -205,7 +220,7 @@ BOOL CDatabase::QueryProvider(std::vector<STProvider>& vtProvider)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_PROVIDER)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -214,7 +229,7 @@ BOOL CDatabase::QueryProvider(std::vector<STProvider>& vtProvider)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if ( pData == NULL ) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryProvider error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryProvider error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -260,7 +275,7 @@ BOOL CDatabase::InserSoc(const STSOC& soc)
 	_stprintf_s(szSql, INSER_SOC, soc.name.c_str(), soc.provider.c_str(), soc.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -310,7 +325,7 @@ over:
 
 #ifdef _DEBUG
 	if ( !bResult )
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 
 	return bResult;
@@ -325,7 +340,7 @@ BOOL CDatabase::InserSoc(std::string name, std::string provider, std::string not
 	_stprintf_s(szSql, INSER_SOC, name.c_str(), provider.c_str(), note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -383,13 +398,13 @@ BOOL CDatabase::InserSoc(std::string name, std::string provider, std::string not
 		bResult = TRUE;
 
 over:
-	mysql_stmt_close(stmt);
-
 #ifdef _DEBUG
 	if (!bResult)
-		TRACE1(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InserSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 
+	mysql_stmt_close(stmt);
+
 	return bResult;
 #endif
 }
@@ -401,7 +416,7 @@ BOOL CDatabase::DeleteSoc(std::string name)
 	_stprintf_s(szSql, DEL_SOC, name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -416,7 +431,7 @@ BOOL CDatabase::UpdateSoc(std::string name, const STSOC& soc)
 	_stprintf_s(szSql, MOD_SOC, soc.name.c_str(), soc.provider.c_str(), soc.note.c_str(), name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateSoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateSoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -429,7 +444,7 @@ BOOL CDatabase::QuerySoc(std::vector<STSOC>& vtSoc)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_SOC)) {
 #ifdef _DEBUG
-		TRACE1(_T("QuerySoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QuerySoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -438,7 +453,7 @@ BOOL CDatabase::QuerySoc(std::vector<STSOC>& vtSoc)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QuerySoc error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QuerySoc error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -484,7 +499,7 @@ BOOL CDatabase::InsertBrand(const STBranch& brand)
 	_stprintf_s(szSql, INSER_BRAND, brand.name.c_str(), brand.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -499,7 +514,7 @@ BOOL CDatabase::InsertBrand(std::string name, std::string note)
 	_stprintf_s(szSql, INSER_BRAND, name.c_str(), note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -514,7 +529,7 @@ BOOL CDatabase::DeleteBrand(std::string name)
 	_stprintf_s(szSql, DEL_BRAND, name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -529,7 +544,7 @@ BOOL CDatabase::UpdateBrand(std::string name, const STBranch& brand)
 	_stprintf_s(szSql, MOD_BRAND, brand.name.c_str(), brand.note.c_str(), name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -542,7 +557,7 @@ BOOL CDatabase::QueryBrand(std::vector<STBranch>& vtBrand)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_BRAND)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -551,7 +566,7 @@ BOOL CDatabase::QueryBrand(std::vector<STBranch>& vtBrand)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -644,7 +659,7 @@ BOOL CDatabase::InsertQuarter(const STQuarter& quarter)
 	_stprintf_s(szSql, INSER_QUARTER, quarter.name.c_str(), quarter.scp.c_str(), quarter.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -659,7 +674,7 @@ BOOL CDatabase::InsertQuarter(std::string name, std::string scp, std::string not
 	_stprintf_s(szSql, INSER_QUARTER, name.c_str(), scp.c_str(), note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -674,7 +689,7 @@ BOOL CDatabase::DeleteQuarter(std::string name)
 	_stprintf_s(szSql, DEL_QUARTER, name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -689,7 +704,7 @@ BOOL CDatabase::UpdateQuarter(std::string name, const STQuarter& quarter)
 	_stprintf_s(szSql, MOD_QUARTER,quarter.name.c_str(), quarter.scp.c_str(), quarter.note.c_str(), name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -702,7 +717,7 @@ BOOL CDatabase::QueryQuarter(std::vector<STQuarter>& vtQuarter)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_QUARTER)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -711,7 +726,7 @@ BOOL CDatabase::QueryQuarter(std::vector<STQuarter>& vtQuarter)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryQuarter error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryQuarter error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -756,7 +771,7 @@ BOOL CDatabase::InsertServer(const STServer& Server)
 	_stprintf_s(szSql, INSER_SERVER, Server.name.c_str(), Server.ip.c_str(), Server.type.c_str(), Server.user.c_str(), Server.password.c_str(),Server.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -771,7 +786,7 @@ BOOL CDatabase::InsertServer(std::string name, std::string ip, std::string type,
 	_stprintf_s(szSql, INSER_SERVER, name.c_str(), ip.c_str(), type.c_str(), user.c_str(), password.c_str(), note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -786,7 +801,7 @@ BOOL CDatabase::DeleteServer(std::string name)
 	_stprintf_s(szSql, DEL_SERVER, name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -801,7 +816,7 @@ BOOL CDatabase::UpdateServer(std::string name, const STServer& Server)
 	_stprintf_s(szSql, MOD_SERVER, Server.name.c_str(), Server.ip.c_str(), Server.type.c_str(), Server.user.c_str(), Server.password.c_str(), Server.note.c_str(), name.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -814,7 +829,7 @@ BOOL CDatabase::QueryServer(std::vector<STServer>& vtServer)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_SERVER)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -823,7 +838,7 @@ BOOL CDatabase::QueryServer(std::vector<STServer>& vtServer)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -871,7 +886,7 @@ BOOL CDatabase::InsertUser(const STUser& user)
 	_stprintf_s(szSql, INSER_USER, user.user.c_str(), user.password.c_str(), user.permission.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -886,7 +901,7 @@ BOOL CDatabase::InsertUser(std::string user, std::string password, std::string p
 	_stprintf_s(szSql, INSER_USER, user.c_str(), password.c_str(), permission.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -901,7 +916,7 @@ BOOL CDatabase::DeleteUser(std::string user)
 	_stprintf_s(szSql, DEL_USER, user.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -916,7 +931,7 @@ BOOL CDatabase::UpdateUser(std::string user, const STUser& stUser)
 	_stprintf_s(szSql, MOD_USER, stUser.user.c_str(), stUser.password.c_str(), stUser.permission.c_str(), user.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -929,7 +944,7 @@ BOOL CDatabase::QueryUser(std::vector<STUser>& vtUser)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_USER)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -938,7 +953,7 @@ BOOL CDatabase::QueryUser(std::vector<STUser>& vtUser)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryUser error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -985,7 +1000,7 @@ BOOL CDatabase::InsertBranch(const STBranch& branch)
 		branch.type.c_str(), branch.status.c_str(), branch.note.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertBranch error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertBranch error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1000,7 +1015,7 @@ BOOL CDatabase::DeleteBranch(std::string branch)
 	_stprintf_s(szSql, DEL_BRANCH, branch.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteBranch error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteBranch error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1017,7 +1032,7 @@ BOOL CDatabase::UpdateBranch(std::string branch, const STBranch& stBranch)
 		stBranch.status.c_str(), stBranch.note.c_str(),branch.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateBranch error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateBranch error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1030,7 +1045,7 @@ BOOL CDatabase::QueryBranch(std::vector<STBranch>& vtBranch)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_BRANCH)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryBranch error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryBranch error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1039,7 +1054,7 @@ BOOL CDatabase::QueryBranch(std::vector<STBranch>& vtBranch)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryBranch error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryBranch error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1095,7 +1110,7 @@ BOOL CDatabase::InsertQBrand(const STQbrand& QBrand)
 		QBrand.note.c_str(), QBrand.status.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("InsertQBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("InsertQBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1110,7 +1125,7 @@ BOOL CDatabase::DeleteQBrand(std::string soc, std::string quarter, std::string b
 	_stprintf_s(szSql, DEL_QBRAND, soc.c_str(), brand.c_str(), quarter.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("DeleteQBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("DeleteQBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1130,11 +1145,11 @@ BOOL CDatabase::UpdateQBrand(std::string brand, STQbrand& QBrand)
 		QBrand.gtvs.c_str(), QBrand.note.c_str(),
 		QBrand.apps_cfg.c_str(), QBrand.fav_cfg.c_str(),
 		QBrand.local_cfg.c_str(), QBrand.ftpdir.c_str(),
-		QBrand.codedir.c_str(), QBrand.pre_apk.c_str(), QBrand.status.c_str(),
+		QBrand.codedir.c_str(), QBrand.status.c_str(),
 		brand.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateQBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateQBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1152,11 +1167,11 @@ BOOL CDatabase::UpdateQBrand(std::string soc, std::string quarter, std::string b
 		QBrand.oemkey.c_str(), QBrand.approveddate.c_str(), QBrand.fingerprint.c_str(),
 		QBrand.builddate.c_str(), QBrand.gtvs.c_str(), QBrand.note.c_str(),
 		QBrand.apps_cfg.c_str(), QBrand.fav_cfg.c_str(), QBrand.local_cfg.c_str(),
-		QBrand.ftpdir.c_str(), QBrand.codedir.c_str(), QBrand.pre_apk.c_str(), QBrand.status.c_str(),
+		QBrand.ftpdir.c_str(), QBrand.codedir.c_str(), QBrand.status.c_str(),
 		brand.c_str());
 	if (0 != mysql_query(m_pConn, szSql)) {
 #ifdef _DEBUG
-		TRACE1(_T("UpdateQBrand error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("UpdateQBrand error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1169,7 +1184,7 @@ BOOL CDatabase::QueryQBrand(std::vector<STQbrand>& vtQBrand)
 	CHECKDB;
 	if (0 != mysql_query(m_pConn, QUERY_QBRAND)) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1178,7 +1193,7 @@ BOOL CDatabase::QueryQBrand(std::vector<STQbrand>& vtQBrand)
 	MYSQL_RES* pData = mysql_store_result(m_pConn);
 	if (pData == NULL) {
 #ifdef _DEBUG
-		TRACE1(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
+		_dprintf(_T("QueryServer error=%s\n"), m_pError ? m_pError : "");
 #endif
 		return FALSE;
 	}
@@ -1221,8 +1236,7 @@ BOOL CDatabase::QueryQBrand(std::vector<STQbrand>& vtQBrand)
 		QBrand.local_cfg = row[14];
 		QBrand.ftpdir = row[15];
 		QBrand.codedir = row[16];
-		QBrand.pre_apk = row[17];
-		QBrand.status = row[18];
+		QBrand.status = row[17];
 		vtQBrand.push_back(QBrand);
 	}
 
@@ -1472,22 +1486,104 @@ void test(MYSQL* mysql)
 
 void DBTest()
 {
-	CDatabase db;
-	if (db.Init(_STR_HOST_, _STR_USER_, _STR_PASSWD_, _STR_DBNAME_))
+	if (CDatabase::GetInstance()->Init(_STR_HOST_, _STR_USER_, _STR_PASSWD_, _STR_DBNAME_))
 	{
-		if (1) {
-			db.InserSoc(_T("RT2851C"), _T("RealTealk"), _T("RTK台湾"));
-			db.InserSoc(_T("RT2851M"), _T("RealTealk2"), _T("RTK台湾"));
+		if (0) {
+			CDatabase::GetInstance()->InserSoc(_T("RT2851C"), _T("RealTealk"), _T("RTK台湾"));
+			CDatabase::GetInstance()->InserSoc(_T("RT2851M"), _T("RealTealk2"), _T("RTK台湾"));
 			std::vector<STSOC> vtSOC;
-			db.QuerySoc(vtSOC);
+			CDatabase::GetInstance()->QuerySoc(vtSOC);
 
 			for (std::vector<STSOC>::iterator it = vtSOC.begin(); it != vtSOC.end(); it++) {
-				TRACE3(_T("name=%s, provider=%s, note=%s\n"), it->name.c_str(), it->provider.c_str(), it->note.c_str());
+				_dprintf(_T("name=%s, provider=%s, note=%s\n"), it->name.c_str(), it->provider.c_str(), it->note.c_str());
 				it->note = _T("xxxx1111xxx");
-				db.UpdateSoc(it->name, *it);
+				CDatabase::GetInstance()->UpdateSoc(it->name, *it);
 			}
 		}
 
+		if (0)
+		{
+			// 新增用户;
+			CDatabase::GetInstance()->InsertUser(_T("user"), _T("123456"), _T("0000-0000-0000-0000"));
+			CDatabase::GetInstance()->InsertUser(_T("user1"), _T("123456"), _T("0000-0000-0000-0000"));
+			CDatabase::GetInstance()->InsertUser(_T("user2"), _T("123456"), _T("0000-0000-0000-0000"));
+			CDatabase::GetInstance()->InsertUser(_T("user3"), _T("123456"), _T("0000-0000-0000-0000"));
+
+			// 更新用户;
+			STUser stUser;
+			stUser.user = _T("admin");
+			stUser.password = _T("96321");
+			stUser.permission = _T("0000-0000-1111-0011");
+			CDatabase::GetInstance()->UpdateUser(_T("user"), stUser);
+
+			// 查询用户;
+			std::vector<STUser> vtUser;
+			CDatabase::GetInstance()->QueryUser(vtUser);
+			for ( std::vector<STUser>::iterator it = vtUser.begin(); it != vtUser.end(); it++ )
+			{
+				_dprintf(_T("用户名:%s,用户密码:%s,用户权限:%s\n"), it->user.c_str(), it->password.c_str(), it->permission.c_str());
+			}
+		}
+
+		if (1)
+		{
+			// 新增品牌;
+			CDatabase::GetInstance()->InsertBrand(_T("SCBC"), _T("SCBC"));
+			CDatabase::GetInstance()->InsertBrand(_T("MICROMAX"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ARTEL"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("PANASONIC"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("THOMSON"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("SANYO"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("JVC"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("NOKIA"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("EAS-ELECTRIC"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("STRONG"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("LLOYD"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("CASPER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("CONDOR"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("DENKA"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ACONATIC"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("CG"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ORIENT"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("KALLEY"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("EVVOLI"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("COMPAQ"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("VISION-TECHNOLOGY"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("SINGER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("HYUNDAI"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("RECCO"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("AMSTRAD"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("HITACHI"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ERITO"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("PIONEER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("PEL"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("MINISTER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("SCHNEIDER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("INNOS"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("LUCOMS"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("XTREME"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ALHAFIDH"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ESSENTIELB"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("MASTER-G"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("KAPEK"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("BOTECH"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("HOME-ELITE"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("SAMPO"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("TESLA"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("STREAM-SYSTEM"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("ZTRUST"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("AIWA"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("BOREAL"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("MYSTIC"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("POLAROID"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("SCEPTER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("BROOKSTONE"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("RAYLAN"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("PRIME-TECHNICS"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("CHALLENGER"), _T(""));
+			CDatabase::GetInstance()->InsertBrand(_T("TELEFUNKEN"), _T(""));
+		}
+
 		if (0) {
 			CFile file;
 			BYTE* pImage = NULL;
@@ -1500,7 +1596,7 @@ void DBTest()
 				file.Close();
 			}
 
-			db.SetBinaryField("update brand set logo = ? where `name`='SCBC'", pImage, dwLength);
+			CDatabase::GetInstance()->SetBinaryField("update brand set logo = ? where `name`='SCBC'", pImage, dwLength);
 			if (pImage)
 				delete[]pImage;
 			pImage = NULL;
@@ -1511,7 +1607,7 @@ void DBTest()
 		{
 			BYTE* pImage = NULL;
 			DWORD dwLength = 0;
-			db.GetBinaryField("select logo from brand where `name`='SCBC';", (void**)&pImage, dwLength);
+			CDatabase::GetInstance()->GetBinaryField("select logo from brand where `name`='SCBC';", (void**)&pImage, dwLength);
 
 			CFile file;
 			if (file.Open(_T("D:\\11.png"), CFile::modeCreate | CFile::modeWrite))

+ 10 - 1
CTSManager/CTSManager/Database.h

@@ -7,9 +7,18 @@
 
 class CDatabase
 {
-public:
 	CDatabase();
+public:	
 	~CDatabase();
+	static CDatabase* GetInstance()
+	{
+		static CDatabase* pInstance = NULL;
+		if (pInstance == NULL) {
+			pInstance = new CDatabase();
+		}
+
+		return pInstance;
+	}
 protected:
 
 private:

+ 3 - 3
CTSManager/CTSManager/table.h

@@ -14,7 +14,7 @@
 //#define INSER_PROVIDER _T("INSERT INTO `provider` (`name`,`note`) VALUES ('%s', '%s');")
 #define INSER_SOC _T("INSERT INTO `soc` (`name`,`provider`,`note`) VALUES ('%s', '%s', '%s');")
 #define INSER_QUARTER _T("INSERT INTO `quarter` (`name`,`scp`,`note`) VALUES ('%s', '%s', '%s');")
-#define INSER_BRAND _T("INSERT INTO `brand` (`name`,`note`,``) VALUES ('%s', '%s');")
+#define INSER_BRAND _T("INSERT INTO `brand` (`name`,`note`) VALUES ('%s', '%s');")
 #define INSER_SERVER _T("INSERT INTO `server` (`name`,`ip`,`type`,`user`,`password`,`note`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s');")
 #define INSER_BRANCH _T("INSERT INTO `branch` (`name` ,`quarter`,`address`,`provider`,`chip`,`type`,`status`,`note`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');")
 #define INSER_USER _T("INSERT INTO `user` (`user`,`password`,`permission`) VALUES ('%s', '%s', '%s');")
@@ -42,7 +42,7 @@
 #define MOD_QUARTER _T("UPDATE `quarter` SET `name`='%s', `scp` = '%s' ,`note`='%s' WHERE `name`='%s';")
 #define MOD_SERVER _T("UPDATE `server` SET `name`='%s', `ip` = '%s', `type`='%s', `user`='%s', `password`='%s', `note`='%s' WHERE `name`='%s';")
 #define MOD_USER _T("UPDATE `user` SET `user`='%s', `password` = '%s', `permission`='%s' WHERE `user`='%s';")
-#define MOD_QBRAND _T("UPDATE qbrand SET soc='%s', `quarter` = '%s', brand = '%s', whitelist = '%s', version = '%s', approved = '%s', oemkey = '%s', approveddate = '%s', fingerprint = '%s', builddate = '%s', gtvs = '%s', note = '%s', apps_cfg = '%s', fav_cfg = '%s', local_cfg = '%s', ftpdir = '%s', codedir = '%s', pre_apk = '%s', `status` = '%s' FROM qbrand WHERE `brand` = '%s'")
+#define MOD_QBRAND _T("UPDATE qbrand SET soc='%s', `quarter` = '%s', brand = '%s', whitelist = '%s', version = '%s', approved = '%s', oemkey = '%s', approveddate = '%s', fingerprint = '%s', builddate = '%s', gtvs = '%s', note = '%s', apps_cfg = '%s', fav_cfg = '%s', local_cfg = '%s', ftpdir = '%s', codedir = '%s', `status` = '%s' FROM qbrand WHERE `brand` = '%s'")
 #define MOD_BRANCH _T("UPDATE `branch` SET `quater`='%s', `address`='%s', `provider`='%s', `chip`='%s', `type`='%s', `status`='%s', `note`='%s' WHERE `name`='%s';")
 
 // ²éѯÊý¾Ý;
@@ -52,7 +52,7 @@
 #define QUERY_QUARTER _T("SELECT `name`,`scp`, `note` FROM `quarter`;")
 #define QUERY_SERVER _T("SELECT `name`, `ip`, `type`, `user`, `password`, `note` FROM `server`;")
 #define QUERY_USER _T("SELECT `user`, `password`, `permission` FROM `user`;")
-#define QUERY_QBRAND _T("SELECT soc, `quarter`, brand, whitelist, version, oemkey, approved, approveddate, fingerprint, builddate, gtvs, note, apps_cfg, fav_cfg, local_cfg, ftpdir, codedir, pre_apk, `status` FROM qbrand;")
+#define QUERY_QBRAND _T("SELECT soc, `quarter`, brand, whitelist, version, oemkey, approved, approveddate, fingerprint, builddate, gtvs, note, apps_cfg, fav_cfg, local_cfg, ftpdir, codedir, `status` FROM qbrand;")
 #define QUERY_BRANCH _T("SELECT `name`, `quarter`, `address`, `provider`, `chip`, `type`, `status`, `note` FROM `branch`;")
 #define QUERY_LOG _T("SELECT `id`, `user`,`content`,`datetime` FROM `log`;")
 

+ 4 - 3
CTSManager/scbc_cts.sql

@@ -11,7 +11,7 @@
  Target Server Version : 50731
  File Encoding         : 65001
 
- Date: 08/12/2020 09:00:30
+ Date: 08/12/2020 16:17:10
 */
 
 SET NAMES utf8mb4;
@@ -40,8 +40,10 @@ DROP TABLE IF EXISTS `brand`;
 CREATE TABLE `brand`  (
   `name` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NOT NULL COMMENT '品牌名称',
   `logo` blob NULL COMMENT '最新logo',
-  `pre_apk` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '品牌要预装的apk',
   `note` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT '' COMMENT '品牌备注',
+  `fav_cfg` varchar(1024) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '最新首行配置',
+  `local_cfg` varchar(1024) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '最新SChannel配置',
+  `apps_cfg` varchar(1024) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '最新APPS配置',
   PRIMARY KEY (`name`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = gb18030 COLLATE = gb18030_chinese_ci ROW_FORMAT = Dynamic;
 
@@ -82,7 +84,6 @@ CREATE TABLE `qbrand`  (
   `local_cfg` text CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL COMMENT 'model中的SChannel配置',
   `ftpdir` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT 'ftp下载路径',
   `codedir` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '代码路径:只对Admin有效',
-  `pre_apk` varchar(255) CHARACTER SET gb18030 COLLATE gb18030_chinese_ci NULL DEFAULT NULL COMMENT '品牌要预装的apk',
   `status` bit(1) NULL DEFAULT NULL COMMENT '相对上一季度是否有配置变化:主要用于软件提醒该品牌有修改,在编译时需要注意变更处理'
 ) ENGINE = InnoDB CHARACTER SET = gb18030 COLLATE = gb18030_chinese_ci ROW_FORMAT = Dynamic;