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