240717班级,工业化控制系统,煤矿相关行业,昆仑系统
wangky
2024-10-29 4e09764be3e77fc866399230982086cb606b7e11
Server/ÍõçûÔª/document/µ¥Àýģʽ·â×°.txt
@@ -1,62 +1,51 @@
#include <iostream>
#include <memory>
#include <mutex>
#include <fstream>
#include <string>
#include <ctime>
using namespace std;
class A {
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/resultset.h>
class DatabaseOperator {
private:
    ofstream logFile;
    A() {
        logFile.open("123.txt", ios::app);
    // ç§æœ‰æž„造函数
    DatabaseOperator() {
        try {
            driver = sql::mysql::get_mysql_driver_instance();
            connection = driver->connect("tcp://127.0.0.1:3306", "username", "password");
            connection->setSchema("your_database");
        } catch (sql::SQLException &e) {
            std::cerr << "数据库连接错误: " << e.what() << std::endl;
        }
    }
    ~A() {
        logFile.close();
    }
    A(const A &t){}
    A& operator=(const A &t){}
    static A* volatile s_obj;
    static mutex g_mutex;
    static DatabaseOperator* instance;
    static std::mutex mutex;
    sql::Driver* driver;
    std::unique_ptr<sql::Connection> connection;
public:
    static A* getInstance() {
        if (s_obj == nullptr) {
            lock_guard<mutex> guard(g_mutex);
            if (s_obj == nullptr) {
                s_obj = new A;
            }
    // èŽ·å–å•ä¾‹å®žä¾‹
    static DatabaseOperator* getInstance() {
        std::lock_guard<std::mutex> lock(mutex);
        if (instance == nullptr) {
            instance = new DatabaseOperator();
        }
        return s_obj;
        return instance;
    }
    void write(const string& level, const string& description, const string& time) {
        logFile << "[" << level << "] " << "[" << time << "] " << description << endl;
    }
    void release() {
        if (s_obj) {
            delete s_obj;
            s_obj = nullptr;
    // æ‰§è¡ŒæŸ¥è¯¢æ“ä½œï¼ˆç¤ºä¾‹ï¼‰
    sql::ResultSet* query(const std::string& sql) {
        try {
            std::unique_ptr<sql::Statement> stmt(connection->createStatement());
            return stmt->executeQuery(sql);
        } catch (sql::SQLException &e) {
            std::cerr << "查询错误: " << e.what() << std::endl;
        }
        return nullptr;
    }
};
A* volatile A::s_obj = nullptr;
mutex A::g_mutex;
int main() {
    A* a1 = A::getInstance();
    A* a2 = A::getInstance();
    if (a1 == a2) {
        cout << "单例成功" << endl;
    }
    else {
        cout << "单例失败" << endl;
    }
    time_t now = time(nullptr);
    char buffer[80];
    struct tm timeinfo;
    localtime_s(&timeinfo, &now);
    strftime(buffer, 80, "%Y - %m - %d %H:%M:%S", &timeinfo);
    string timeStr(buffer);
    a1->write("1", "日志", timeStr);
    a1->release();
    return 0;
}
std::mutex DatabaseOperator::mutex;
DatabaseOperator* DatabaseOperator::instance = nullptr;