使用C存储mysql结果数据的最佳方法
我的C编程显然已经生锈了:-( 我已经学习过了,基本上已经适应了 但我不确定存储检索到的数据的最佳方式使用C存储mysql结果数据的最佳方法,mysql,struct,Mysql,Struct,我的C编程显然已经生锈了:-( 我已经学习过了,基本上已经适应了 但我不确定存储检索到的数据的最佳方式 int num_fields = mysql_num_fields(result); MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { for(int i = 0; i < num_fields; ) { printf("%s ", row[i] ? row[i] : "NULL"); }
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
for(int i = 0; i < num_fields; ) {
printf("%s ", row[i] ? row[i] : "NULL");
}
printf("\n");
其中透镜是定义的常数
我正在尝试以下事情:
num_fields = mysql_num_fields(result);
int r = 0;
while ((row = mysql_fetch_row(result))) {
for(int i = 0; i < num_fields; i++) {
printf("%s ", row[i] ? row[i] : "NULL");
sscanf(row[0], "%LEN_NAMEs", parameters[r].name);
sscanf(row[1], "%d", ¶meters[r].max);
num\u fields=mysql\u num\u fields(结果);
int r=0;
while((row=mysql\u fetch\u row(result))){
对于(int i=0;i
这似乎是正常的工作为字符,但不为其他类型
挣扎。也许我是在树胶树上!你的
参数[r]。max
是一个浮点。在那里使用%f
作为格式。%d
是整数,比如参数[r]。活动的
。它在那里工作吗?啊,靶心。很好,非常感谢你。我现在使用的是:sprintf(参数[r]。blah,“%s”,行[somenumber],但我发现有一次,一个字段被它紧跟其后的邻居所扩展:-(有没有找到追踪这个的方法。谢谢。修复了!我所做的就是添加int j;j=sprintf(…)。我应该担心吗?%s
希望行[x]
中有一个以nul结尾的字符串。可能行[x]
不是吗?我不熟悉C语言中的mysql\u fetch\u row()
。我记得有一个例子,当字符串短于最大列长度时才追加\0
。例如,您的列是char(3)然后'a'
会给出'a\0'
,'ab'
会给出'ab\0'
,但是'abc'
只会给出'abc'
(没有\0
),但这是非常古老的知识,我真的记不起发生这种情况的时间和地点。你的参数[r].max
是一个浮点。使用%f
作为格式。%d
用于整数,如参数[r]。活动的。它在那里工作吗?啊,bullseye。很好,非常感谢。我现在使用的是:sprintf(参数[r]。blah,“%s”,行[somenumber],但我发现有一次,一个字段被它紧跟其后的邻居所扩展:-(有没有找到追踪这个的方法。谢谢。修复了!我所做的就是添加int j;j=sprintf(…)。我应该担心吗?%s
希望行[x]
中有一个以nul结尾的字符串。可能行[x]
不是吗?我不熟悉C语言中的mysql\u fetch\u row()
。我记得有一个例子,当字符串短于最大列长度时才追加\0
。例如,您的列是char(3)然后'a'
会给出'a\0'
,'ab'
会给出'ab\0'
,但是'abc'
只会给出'abc'
(没有\0
),但这是非常古老的知识,我真的记不起发生的时间和地点。
num_fields = mysql_num_fields(result);
int r = 0;
while ((row = mysql_fetch_row(result))) {
for(int i = 0; i < num_fields; i++) {
printf("%s ", row[i] ? row[i] : "NULL");
sscanf(row[0], "%LEN_NAMEs", parameters[r].name);
sscanf(row[1], "%d", ¶meters[r].max);