尝试使用带有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, "server", "user", "pass", "database", port, 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((row = mysql_fetch_row(confres)))
{
for(i = 0; i < numfields; i++)
{
while(mfield = mysql_fetch_field(confres))
{
mfield->//??? I'm dead
}
}
}
基本上我想从数据库表中的字段中获取值并将其存储到变量中.
任何形式的帮助将不胜感激:)
谢谢
Avi*_*Avi 15
在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...
}
}
Run Code Online (Sandbox Code Playgroud)
更好的是,不要mytable在程序中执行"SELECT*FROM ".命名您期望的字段会更好,这样您就可以确定返回字段的顺序.
| 归档时间: |
|
| 查看次数: |
27184 次 |
| 最近记录: |