240717班级,工业化控制系统,煤矿相关行业,昆仑系统
1
wangky
2024-11-05 88b2854c40c76750372ae83b862acbb5f5b11776
1
5个文件已修改
2个文件已添加
79 ■■■■ 已修改文件
Server/王琨元/code/ConnectionPool.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/王琨元/code/ConnectionPool.h 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/王琨元/code/MysqlConn.cpp 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/王琨元/code/MysqlConn.h 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Server/王琨元/log/~$模板_王琨元_1104.doc 补丁 | 查看 | 原始文档 | blame | 历史
Server/王琨元/log/日志模板_王琨元_1104.doc 补丁 | 查看 | 原始文档 | blame | 历史
表.docx 补丁 | 查看 | 原始文档 | blame | 历史
Server/ÍõçûÔª/code/ConnectionPool.cpp
@@ -1,3 +1,4 @@
#include "stdafx.h"
#include "ConnectionPool.h"
#include <fstream>
@@ -30,7 +31,7 @@
bool ConnectionPool::parseJsonFile() {
    std::ifstream ifs("dbconf.json");
    /*std::ifstream ifs("dbconf.json");
    Reader rd;
    Value root;
    rd.parse(ifs, root);
@@ -45,7 +46,7 @@
        max_del_time = root["maxDleTime"].asInt();
        m_timeout = root["timeout"].asInt();
        return true;
    }
    }*/
    return false;
}
Server/ÍõçûÔª/code/ConnectionPool.h
@@ -3,11 +3,11 @@
#include <queue>
#include <mutex>
#include <condition_variable>
#include <json/json.h>
//#include <json/json.h>
#include "MysqlConn.h"
using namespace Json;
//using namespace Json;
class ConnectionPool
{
Server/ÍõçûÔª/code/MysqlConn.cpp
@@ -1,5 +1,8 @@
#include "stdafx.h"
#include "MysqlConn.h"
#include <regex>
// åˆå§‹åŒ–连接
MysqlConn::MysqlConn() {
    mysql_ = mysql_init( mysql_ );
@@ -24,32 +27,60 @@
    }
    freeRes();
}
// æ›´æ–°æ•°æ®
bool MysqlConn::update( std::string sql ) {
    if (!isSqlSafe(sql))
    {
    // å‚数化查询优化后的安全检查
    MYSQL_STMT* stmt = mysql_stmt_init(mysql_);
    if (!stmt) {
        return false;
    }
    int ret = mysql_query( mysql_ , sql.c_str());
    if( ret != 0 ){
    if (mysql_stmt_prepare(stmt, sql.c_str(), sql.length())) {
        mysql_stmt_close(stmt);
        return false;
    }
    int paramCount = mysql_stmt_param_count(stmt);
    if (paramCount > 0) {
        // å¦‚果有参数,需要进行参数绑定等操作,这里暂不实现
        mysql_stmt_close(stmt);
        return false;
    }
    if (mysql_stmt_execute(stmt)) {
        mysql_stmt_close(stmt);
        return false;
    }
    mysql_stmt_close(stmt);
    return true;
}
// æŸ¥è¯¢æ•°æ®åº“
bool MysqlConn::query(std::string sql) {
    freeRes( );
    if (!isSqlSafe(sql))
    {
    // å‚数化查询优化后的安全检查
    MYSQL_STMT* stmt = mysql_stmt_init(mysql_);
    if (!stmt) {
        return false;
    }
    int ret = mysql_query(mysql_, sql.c_str());
    if (ret != 0)   return false;
    // èŽ·å–æŸ¥è¯¢ç»“æžœ
    res_ = mysql_store_result(mysql_);
    if (!res_)   return false;
    if (mysql_stmt_prepare(stmt, sql.c_str(), sql.length())) {
        mysql_stmt_close(stmt);
        return false;
    }
    int paramCount = mysql_stmt_param_count(stmt);
    if (paramCount > 0) {
        // å¦‚果有参数,需要进行参数绑定等操作,这里暂不实现
        mysql_stmt_close(stmt);
        return false;
    }
    if (mysql_stmt_execute(stmt)) {
        mysql_stmt_close(stmt);
        return false;
    }
    res_ = mysql_stmt_result_metadata(stmt);
    if (!res_) {
        mysql_stmt_close(stmt);
        return false;
    }
    mysql_stmt_close(stmt);
    return true;
}
@@ -87,22 +118,20 @@
    return mysql_rollback(mysql_);
}
void MysqlConn::refreshActiveTime()
{
void MysqlConn::refreshActiveTime() {
    activeTime_  = std::chrono::steady_clock::now();
}
long long MysqlConn::getActiveTime()
{
long long MysqlConn::getActiveTime() {
     // çº³ç±³
     std::chrono::nanoseconds  nased =  std::chrono::steady_clock::now() - activeTime_;
     // è½¬æ¢æˆæ¯«ç±³
     std::chrono::microseconds millsed = std::chrono::duration_cast<std::chrono::microseconds>( nased );
     return millsed.count( );   // å¤šå°‘毫秒
}
// å®‰å…¨æ ¡éªŒå®žçŽ°ï¼Œè¿™é‡Œç®€å•ä½¿ç”¨æ­£åˆ™è¡¨è¾¾å¼åˆ¤æ–­æ˜¯å¦åŒ…å«å±é™©å­—ç¬¦
bool MysqlConn::isSqlSafe(const std::string& sql)
{
bool MysqlConn::isSqlSafe(const std::string& sql) {
    std::regex dangerousPattern(".*(['\";\\-+=]).*");
    return!std::regex_search(sql, dangerousPattern);
}
Server/ÍõçûÔª/code/MysqlConn.h
@@ -2,10 +2,13 @@
#include <string>
#include <WinSock2.h>
#include <mysql.h>
//#include <mysql.h>
#include "MySQL/include/mysql.h"
#include <string.h>
#include <chrono>
#pragma comment(lib,"./MySQL/lib/libmysql.lib")
class MysqlConn
{
public:
Server/ÍõçûÔª/log/~$Ä£°å_ÍõçûÔª_1104.doc
Binary files differ
Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1104.doc
Binary files differ
±í.docx
Binary files differ