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