c++ - 只有一个连接到数据库和使用函数,C++

标签 c++ mysql database connection pool

我有一个连接 MySQL 数据库的类。这个类有 4 个方法。 (插入、getResults 等)我不想在每个方法中都创建数据库连接。所以当我们创建这个对象时我想要一个 init() 。我的问题的连接池解决方案吗?我该如何解决?

有 4 个这样的方法:

bool DataAccessObject::getResults(short int data, std::vector<FaceRecord>* rec)
{
//    DataAccessObject *temp = new DataAccessObject();

    bool ret = false;

    try{
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;
        sql::ResultSet *res;
        sql::PreparedStatement *prepStmt;

        /* Create a connection */
        driver = get_driver_instance();
        con = driver->connect("tcp://127.0.0.1:3306", "root", "root");

        /* Connect to the MySQL test database */
        con->setSchema("test");

        std::stringstream s;
        s << "SELECT * FROM Amts WHERE "<< data <<" = "<< data <<"";

        prepStmt = con->prepareStatement (s.str());
        res = prepStmt->executeQuery();

        while(res->next()){
            tempFR.uuId = res->getInt64("uuId");
            tempFR.cameraNo = res->getInt("cameraNo");
            tempFR.age = res->getInt("age");
            tempFR.gender = res->getInt("gender");
            tempFR.time = res->getString("time");
            tempFR.image = res->getString("image");
            rec->push_back(tempFR);
        }


        //return true;
        ret = true;
    }

    catch (sql::SQLException &e)
    {

        std::cout << "# ERR: SQLException in " << __FILE__;
        std::cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << std::endl;
        std::cout << "# ERR: " << e.what();
        std::cout << " (MySQL error code: " << e.getErrorCode();
        std::cout << ", SQLState: " << e.getSQLState() << " )" << std::endl;

    }

    return ret;

}

最佳答案

您可以使用 C++ Singleton design pattern这样您的 init 在您创建它时只会被调用一次。

关于c++ - 只有一个连接到数据库和使用函数,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117855/

相关文章:

MySQL - 这个触发器有什么问题?

sql - 在具有非基于时间的开始和结束列的表中查找间隙

mysql - Blob数据库,极其动态的数据库

c++ - 增加蝇量级 panic

c++ - 握手失败,出现 fatal error SSL_ERROR_SSL : error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER

c++ - OpenGL:准备要发送给着色器的数据困惑

php - 无法获取 fgetcsv 文件以与 MySQL 数据库一起使用

c++ - 如果在 while 循环中调用,QSerialPort::readAll() 会导致 SIGSEGV/SIGABRT

php - 制作一个多维数组php mysql

android - 为 sql db 创建多个表(a-z 表)