优化了操作数据库互斥使用

This commit is contained in:
CHINAMI-TV221UM\Administrator 2024-08-19 10:10:23 +08:00
parent 8fc887fc58
commit 509e3dfaa4

View File

@ -371,12 +371,10 @@ int SqliteDB::GetTableColumnCount(const char *tablename, bool isDB2)
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
strSql = strSql + tablename + ";"; strSql = strSql + tablename + ";";
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
g_tDbMutex.Lock();
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_prepare_v2(GetDbHandle(isDB2), strSql.c_str(), -1, &stmt, 0); sqlite3_prepare_v2(GetDbHandle(isDB2), strSql.c_str(), -1, &stmt, 0);
count = sqlite3_column_count(stmt); count = sqlite3_column_count(stmt);
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return count; return count;
} }
@ -393,11 +391,9 @@ int SqliteDB::GetTableRows(const char *tablename, const char *whereCon)
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n",sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n",sqlite3_errmsg(mDBAcess));
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return -1; return -1;
} }
int retStep = sqlite3_step(stmt); int retStep = sqlite3_step(stmt);
@ -405,7 +401,6 @@ int SqliteDB::GetTableRows(const char *tablename, const char *whereCon)
nRow = sqlite3_column_int(stmt, 0); nRow = sqlite3_column_int(stmt, 0);
} }
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return nRow; return nRow;
} }
@ -440,11 +435,9 @@ vec_t SqliteDB::GetDataSingleLine(const char *tablename, const char *column, con
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return vecResult; return vecResult;
} }
int retStep = sqlite3_step(stmt); int retStep = sqlite3_step(stmt);
@ -457,7 +450,6 @@ vec_t SqliteDB::GetDataSingleLine(const char *tablename, const char *column, con
} }
} }
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return vecResult; return vecResult;
} }
@ -474,9 +466,11 @@ char* SqliteDB::GetDataChar(const char *tablename, const char *column, const cha
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return NULL; return NULL;
} }
int retStep = sqlite3_step(stmt); int retStep = sqlite3_step(stmt);
@ -485,6 +479,7 @@ char* SqliteDB::GetDataChar(const char *tablename, const char *column, const cha
memcpy(szRes,columninfo,sizeof(szRes)); memcpy(szRes,columninfo,sizeof(szRes));
} }
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return szRes; return szRes;
} }
@ -501,9 +496,11 @@ std::string SqliteDB::GetData(const char *tablename, const char *column, const c
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
g_tDbMutex.Lock();
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return strRes; return strRes;
} }
int retStep = sqlite3_step(stmt); int retStep = sqlite3_step(stmt);
@ -512,6 +509,7 @@ std::string SqliteDB::GetData(const char *tablename, const char *column, const c
strRes = columninfo != NULL ? columninfo : ""; strRes = columninfo != NULL ? columninfo : "";
} }
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return strRes; return strRes;
} }
@ -564,13 +562,11 @@ array_t SqliteDB::GetDataMultiLineTransaction(const char *tablename, const char
} }
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
g_tDbMutex.Lock();
sqlite3_exec(mDBAcess, "BEGIN", 0, 0, NULL); sqlite3_exec(mDBAcess, "BEGIN", 0, 0, NULL);
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) { if (sqlite3_prepare_v2(mDBAcess, strSql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess)); print_error("sqlite3_prepare_v2:%s\n", sqlite3_errmsg(mDBAcess));
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
g_tDbMutex.UnLock();
return arrResult; return arrResult;
} }
sqlite3_reset(stmt); sqlite3_reset(stmt);
@ -589,7 +585,6 @@ array_t SqliteDB::GetDataMultiLineTransaction(const char *tablename, const char
} }
sqlite3_finalize(stmt); sqlite3_finalize(stmt);
sqlite3_exec(mDBAcess, "COMMIT", 0, 0, NULL); sqlite3_exec(mDBAcess, "COMMIT", 0, 0, NULL);
g_tDbMutex.UnLock();
return arrResult; return arrResult;
} }
vec_t SqliteDB::GetDataMultiLineOfOneColumn(const char *tablename, const char *column, const char *whereCon) vec_t SqliteDB::GetDataMultiLineOfOneColumn(const char *tablename, const char *column, const char *whereCon)
@ -711,14 +706,12 @@ int SqliteDB::UpdateNodeNameData(const char* tablename, const char* updateColumn
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(isDB2), szSql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), szSql, 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
} }
g_tDbMutex.UnLock();
return iRet; return iRet;
} }
int SqliteDB::UpdateTableData(const char* tablename, const char* updateColumn, const char* whereCond, bool isDB2) int SqliteDB::UpdateTableData(const char* tablename, const char* updateColumn, const char* whereCond, bool isDB2)
@ -733,12 +726,14 @@ int SqliteDB::UpdateTableData(const char* tablename, const char* updateColumn, c
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
} }
g_tDbMutex.UnLock();
return iRet; return iRet;
} }
@ -747,9 +742,7 @@ int SqliteDB::UpdateTableData(const char* directSql, bool isDB2)
print_light_green("%s\n", directSql); print_light_green("%s\n", directSql);
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", directSql); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", directSql);
char *msg; char *msg;
g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(isDB2), directSql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), directSql, 0, 0, &msg);
g_tDbMutex.UnLock();
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
@ -769,9 +762,7 @@ int SqliteDB::UpdateTableDataOneColumn(const char* tablename, const char* column
print_light_green("%s\n", strSql.c_str()); print_light_green("%s\n", strSql.c_str());
// if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str()); // if (SqlSwitch()) log_system->log_write_system("[info]","%s\n", strSql.c_str());
char *msg; char *msg;
g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(isDB2), strSql.c_str(), 0, 0, &msg);
g_tDbMutex.UnLock();
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
@ -783,7 +774,6 @@ int SqliteDB::InsertData(const char* tablename, const char* insertValues, int re
{ {
char *msg; char *msg;
int iRet = 0; int iRet = 0;
g_tDbMutex.Lock();
if (expandable) { if (expandable) {
char *strSql = (char *)malloc(4096); char *strSql = (char *)malloc(4096);
if (strSql == NULL) { if (strSql == NULL) {
@ -815,19 +805,16 @@ int SqliteDB::InsertData(const char* tablename, const char* insertValues, int re
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
} }
g_tDbMutex.UnLock();
return iRet; return iRet;
} }
int SqliteDB::InsertData(const char* insertSql) int SqliteDB::InsertData(const char* insertSql)
{ {
char *msg; char *msg;
g_tDbMutex.Lock();
int iRet = sqlite3_exec(GetDbHandle(false), insertSql, 0, 0, &msg); int iRet = sqlite3_exec(GetDbHandle(false), insertSql, 0, 0, &msg);
if (iRet != SQLITE_OK) { if (iRet != SQLITE_OK) {
print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg); print_error("sqlite3 error: code=%d msg=%s\n", iRet, msg);
sqlite3_free(msg); sqlite3_free(msg);
} }
g_tDbMutex.UnLock();
return iRet; return iRet;
} }
int SqliteDB::CalculateBattery() int SqliteDB::CalculateBattery()