【问题标题】:mysql C++ select all rows from all columnsmysql C++ 从所有列中选择所有行
【发布时间】:2016-01-09 23:40:54
【问题描述】:

我正在尝试从表中的所有列中选择所有行并将它们输出到一个字符串,我尝试增加结果集并将每一行附加到一个字符串,但没有奏效。

我可以让它工作的唯一方法是如果我手动更改 resultset.getString() 但这只会显示 1 个完整的行。

    sql::Driver *driver;
  sql::Connection *con;
  sql::Statement *stmt;
  sql::ResultSet *res;

  /* 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");

  stmt = con->createStatement();
  res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
  while (res->next()) {
    cout << "\t... MySQL replies: ";
    /* Access column data by alias or column name */
    cout << res->getString("_message") << endl;
    cout << "\t... MySQL says it again: ";
    /* Access column fata by numeric offset, 1 is the first column */
    cout << res->getString(1) << endl;
  }

正如你在第二行最后一行看到的那样“cout getString(1)

是否可以选择所有列以便输出所有列中的所有行?

【问题讨论】:

    标签: c++ mysql


    【解决方案1】:

    编辑:

    最终,这将为您提供所需的...

    sql::Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;
    sql::ResultSet  *res;
    
    int main(int argc, const char *argv[]) {
    
      /* Create a connection */
      driver = get_driver_instance();
      con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
    
      /* Connect to the MySQL so_test database */
      con->setSchema("so_test");
      stmt = con->createStatement();
    
      // Select all columns/rows from example_table
      res = stmt->executeQuery("SELECT * FROM example_table");
    
      //get result set metadata
      sql::ResultSetMetaData *res_meta = res -> getMetaData();
      int columns = res_meta -> getColumnCount();
    
      //Loop for each row
      while (res->next()) {
        /* Access column data by index, 1-indexed*/
        for (int i = 1; i <= columns; i++) {
          cout << res->getString(i) << "|" ;
        }
        cout << endl;
      }
    
      return 0;
    }
    

    别忘了包括

    #include <resultset_metadata.h>
    

    【讨论】:

    • 我似乎无法运行“mysql_num_rows()”,有什么想法吗?感谢您迄今为止的帮助。
    • 我可以通过我已经尝试过的结果集元数据获取它,它只输出第一列行。
    • 更正,我运行时它崩溃了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2013-07-03
    • 2017-08-29
    • 2017-04-26
    • 2012-07-23
    相关资源
    最近更新 更多