【问题标题】:Problem using mysql++ library使用 mysql++ 库的问题
【发布时间】:2010-09-23 19:34:27
【问题描述】:

我已经阅读了教程,我通常了解它是如何工作的: 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 的成员。我不知道如何解决这个问题。


嗨,梅林,

感谢代码并查看我的问题。

我尝试了上面的代码,但我再次收到错误

错误:在非类类型“MYSQL*”的“连接”中请求成员“查询”

在这行代码

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

请帮助我哪里出错了?

【问题讨论】:

  • 请编辑您的代码,使其看起来像真正的 c++ 代码。
  • 请尽量清楚您想要做什么以及您的实际问题是什么。
  • 根据他之前的问题编辑了问题。
  • 没有std::storeQueryResult也没有std::ostringstream::store()
  • @Georg Fritzsche:听起来像是对我的回答;)

标签: c++ mysql select mysql++


【解决方案1】:

问题是您必须使用 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;

【讨论】:

  • 如果connection.query(query_string) 不起作用,您可以试试connection.query(query_string.c_str())
猜你喜欢
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 2016-03-10
  • 2011-08-20
  • 1970-01-01
相关资源
最近更新 更多