Проблема с использованием библиотеки mysql ++ - PullRequest
2 голосов
/ 23 сентября 2010

Я прочитал учебник на, и я обычно понимаю, как это работает: http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#simple

Я пытаюсь построить этот код mysql ++, и я получаю ошибку:

std::ostringstream query3;
query3<<"select pipe_id from pipe where version_id='"<<id<<"'";
std::storeQueryResult ares=query3.store();

for(size_t i=0;i<ares.num_rows();i++)   
   cout<<ares[i]["version_id"]<<ares[i]["pipe_id"]<<std::endl;

mysql_query(&mysql,query3.str().c_str());

Ошибка в том, что store не является членом ostringstream.Я не уверен, как решить проблему.


Привет, Мерлин,

Спасибо за код и смотрю на мою проблему.

Я попробовал приведенный выше кодно снова я получаю ошибку

error: запрос для элемента 'query' в 'connection', который не является типом класса 'MYSQL *'

в этой строке кода

// Construct a query object with the query string mysqlpp::Query query = 
connection.query(query_string);

любезно помогите, где я иду не так?

1 Ответ

6 голосов
/ 24 сентября 2010

Проблема в том, что для выполнения запроса вы должны использовать объект запроса mysql ++, а не ostringstream. Ostringstream просто позволяет вам построить строку запроса, но не позволит вам выполнить запрос.

Существует учебное пособие, в котором показано основное использование по адресу: http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#simple

Чтобы перейти от вашего кода к работающему запросу, вам нужно взять динамический запрос, превратить его в строку и использовать его для создания объекта запроса mysql ++.

// todo: create the connection here

// Construct the query string.  You were already doing this in your code
std::ostringstream query_builder;
query_builder << "select pipe_id from pipe where version_id='" << id << "'";

// Convert the ostringstream to a string
std::string query_string = query_builder.str();

// Construct a query object with the query string
mysqlpp::Query query = connection.query(query_string);

// Perform the query
mysqlpp::StoreQueryResult result = query.store();
for(size_t i = 0; i < result.num_rows(); i++)
   std::cout << result[i]["version_id"] << result[i]["pipe_id"] << std::endl;
...