请问如何用C或C++把mysql数据库中的某一列数据读出来,然后把这一列数据存放在数组中?急用!!!谢谢!

现在有一个例子,但是没太看懂,尤其是其中的result是什么类型的变量???MYSQL_ROWrow;unsignedintnum_fields;unsignedinti... 现在有一个例子,但是没太看懂,尤其是其中的result是什么类型的变量???
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;

num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}
展开
 我来答
kinly_jiang
2011-11-17 · TA获得超过178个赞
知道小有建树答主
回答量:66
采纳率:0%
帮助的人:97.6万
展开全部
MYSQL_ROW row; 是mysql内部的类型,可能是一个结构体A,mysql先执行以下desc table的操作,依照表结构创建字段,也可能只是得到一行数据有几列,分别是什么类型。
row = mysql_fetch_row(result)会取一样的数据,mysql里面每成功调用一次这个函数mysql_fetch_row就会取一行,类似
vector<struct A> v_a;
··········赋值v_a·········
全局定义 int x = 0;
function: mysql_fetch_row
while (x < v_a.size())
row = v_a[x++];

mysql_fetch_lengths是得到一个row里面有多少数据,也就是table里的字段数

后面取的过程就很简单了,某个字段row[i] 为空的时候,不做row[i] ? row[i] : "NULL" 取到的会是个'\0',这个对于程序处理是比较危险的,为空的时候就附值一个标识是比较常用的做法。

fyi
追问
你好 谢谢你的答案 上边的这个程序在运行时会报错,result未定义 请问result 应该如何定义及赋值呢,求详细代码!谢谢!
追答
MYSQL _connect;
MYSQL_RES *res;
MYSQL_ROW row;
mysql_init (&_connect);
if (!mysql_real_connect (&_connect, --{ip}--, --{username}--, --{passwd}--, --{database}--, 0, NULL, 0))
{
cout v_sql;
while ((row = mysql_fetch_row(res)))
{
int i = 0;
while (i < numcols)
{
cout << (row[i]!=NULL?row[i]:"IsNull") << "==";
v_sql.push_back(row[i] != NULL ? row[i]: "IsNull");
i++;
}
}
for (int i = 0; i < v_sql.size(); ++i)
{
cout << "*** " << v_sql[i] << endl;
}

上面是我以前的一段代码, 用 --{ }-- 的部分 例如 --{ip}-- 是根据你的环境要配置的
里面res就是你上面的result 也是mysql内部的类型,赋值可以参考上面的代码
yzg001212
2011-11-17 · TA获得超过755个赞
知道小有建树答主
回答量:877
采纳率:20%
帮助的人:881万
展开全部
mysql_num_fields 是求出结果集(即sql语句中的查询)总数
mysql_fetch_row 是获得结果集中具体的值
mysql_fetch_lengths 是得到结果集中每一列的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式