当我尝试使用带有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/1194453/

10-11 22:22