当我尝试使用带有MySQL C API的C ++在mysql中获取表行时,我感到困惑。

我可以用PHP轻松地做到这一点,仅因为C ++是一种强类型的语言,所以我们还需要处理肮脏的过程。

这就是我在PHP中完成的方式

$ data = array();
$ i = 0;
$ query = mysql_query(“ SELECT * FROM`my_table`”);
while($ fetch = mysql_fetch_array($ query))
{
  $ data [$ i] = $ fetch ['columntobefetched'];
  $ i ++;
}

但是在C ++中使用MySQL API怎么做呢?

到目前为止,这是我的代码。...死胡同... x__x

   MYSQL * sqlhnd = mysql_init(NULL);
    mysql_real_connect(sqlhnd,“服务器”,“用户”,“通过”,“数据库”,端口,NULL,0);

    mysql_query(sqlhnd,“ SELECT * FROM`my_table`”);
    MYSQL_RES * confres = mysql_store_result(sqlhnd);
    int totalrows = mysql_num_rows(confres);
    int numfields = mysql_num_fields(confres);
    MYSQL_FIELD * mfield;

    while((行= mysql_fetch_row(confres)))
    {
        for(i = 0; i         {
            while(mfield = mysql_fetch_field(confres))
            {
                mfield-> // ???我死了
            }
        }
    }

基本上,我想从数据库表的字段中获取一个值并将其存储到变量中。

任何帮助将不胜感激:)

谢谢

最佳答案

在MySQL C API中,mysql_fetch_row返回一个MYSQL_ROW对象,该对象实质上是当前行中值的数组。

因此,您的代码应类似于:

mysql_query(sqlhnd, "SELECT * FROM `my_table`");
MYSQL_RES *confres = mysql_store_result(sqlhnd);
int totalrows = mysql_num_rows(confres);
int numfields = mysql_num_fields(confres);
MYSQL_FIELD *mfield;

while((row = mysql_fetch_row(confres)))
{
    for(i = 0; i < numfields; i++)
    {
        char *val = row[i];
        // do something with val...
    }
}


更好的是,不要在程序中执行“ SELECT * FROM mytable”。最好为您期望的字段命名,这样就可以确定返回的字段的顺序。

关于c++ - 使用MySQL C API和C++在MySQL数据库表中获取行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20570202/

10-11 16:00