0
我有一个类来连接MySQL数据库。这个类有4种方法。 (insert,getResults等)我不想在每个方法中创建数据库连接。所以我想创建这个对象时需要一个init()。我的问题是连接池解决方案吗?我该如何解决?只有一个连接数据库和使用函数,C++
有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;
}
你刚刚自己解决了这个问题。目前还不清楚你在问什么,因为你甚至没有输入所有的方法,也没有人可能知道你真的在使用什么课程。 –
检查数据库驱动程序的文档。它可以本地实现连接池,在这种情况下,您不需要这样做。 – Sean
我已经为我的问题添加了一个方法。我想删除“创建连接”字段和之前。 – Duke