用文本方式保存数据会有许多问题,比如你用fprintf(fp,"%d%s%s%lf%lf%lf%lf",comm[m].num,comm[m].name,comm[m].chang,comm[m].price,comm[m].count,comm[m].in,comm[m].total)}写数据时,数据全都接在一起,以后你怎么区分读入那个连续的字符串和那些double型数据呢?比如字符串是"aaa"和"bbb",写到文件中就是"aaabbb",浮点数是123.456和789.012,写到文件中是123.456789.012,这种情况建议加分隔符如"%d %s %s %lf %lf %lf %lf",但又要求你字符串中不允许出现分隔符字符,否则会影响以后的数据读取。
一般情况下是这样做的:程序采用二进制数据格式而不用文本格式
打开文件写的属性是"wb+"或"wb";读取时属性是"rb";
写整个记录(假设struct MMM comm[1024]): fwrite(comm[m],1,sizeof(struct MMM),fp)
读整个记录: fread(comm[m],1,sizeof(struct MMM),fp)
这样就可以不用一个一个数据单独处理了一次可读写整个结构的数据。
sql server 2005里面的tinyint 长度为一个字节 相当于c#中的byte类型其范围为0到255所以转换过程为 string str="123"byte byten=Convert.ToByte(str)这样byte就和数据库里面的tinyint对应上了你的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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)