C语言结构体数组变量插入mysql数据库的语句怎么写?

我的代码如下://定义一个数据结构数组structst_data{unsigneda1;unsigneda2;unsigneda3;}st[100];floatv1,v2... 我的代码如下:

//定义一个数据结构数组
struct st_data

{

unsigned a1;

unsigned a2 ;

unsigned a3;

}st[100];

float v1,v2,v3;

int i;

char i_query[242];

for(i=0; fread(&st[i],sizeof(struct st_data),1,fp)!=0; ++i)

{

v1 = consv(t[i].a1);//consv 是一个处理数据计算的自定义函数

v2 = consv(st[i].a2);

v3= consv(st[i].a3);

printf("%15.2f%15.2f%15.2f",v1,v2,v3);

fprintf(i_query, "INSERT INTO stock_data
values(%.2f,%.2f,%.2f)",v1,v2,v3);

if ( mysql_query(&mysql, i_query) != 0 )
//如果连接成功,则开始插入

{

fprintf(stderr, "插入失败!\n");

exit(1);

}

else

{

printf("数据插入成功!");

}

}

以上语句中,printf("%15.2f%15.2f%15.2f",v1,v2,v3);执行了循环,读出了二进制文件里面所有数据

但是fprintf(i_query,
"INSERT INTO stock_data
values(%.2f,%.2f,%.2f)",v1,v2,v3);这一句却只插入一次,也就是i=0的那一句。

我想知道为什么会这样?能告诉我破解之法吗?
自己看书,把这个问题解决了,其实呢,不是因为别的原因,是我自己太粗心了,( mysql_query(&mysql, i_query) != 0 )这句在我的程序里写在FOR循环外面了。
所以永远都是只插入最后一条数据。其实这给我一个教训,自己粗心,浪费大量时间
让我又把数据类型重新定义了一遍。
求人不如求自己。自己才是最可靠的!
永远不要靠别人编程!
展开
 我来答
阳光上的桥
推荐于2016-02-08 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65813
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
你的i_query是生成SQL文本文件吗,反复调用fprintf(i_query, "INSERT INTO stock_data values(%.2f,%.2f,%.2f)",v1,v2,v3);可以在文件中生成多行INSERT INTO语句,可以插入多行,但是你多个SQL语句之间应该有分号,你的这个语句可以修改如下:

fprintf(i_query, "INSERT INTO stock_data values(%.2f,%.2f,%.2f);\n",v1,v2,v3);
追问
我刚试过了,结果还是只插入一条,而且是数据的最后一条记录。
非常感谢你的回答,我可以加你Q 吗?
我可以把我写的源代码给你分析一下,你看可以吗?
i_query是保存格式化后的SQL语句字符串的字符数组。
我就希望,能够把所有记录都循环插入到数据库。
这个问题折腾了我好几天、帮帮我吧
追答
如果是成功最后一条,那么是不是你每次fprintf之前都fopen以覆盖方式打开文件呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式