程序员人生 网站导航

[置顶] mysql上将文本上数据批量导入数据库c语言实现(C API)

栏目:数据库应用时间:2014-12-30 10:15:53

其实原理很简单,想必大家应当都看了我写的那篇(1个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本的学生信息管理系统(增、删、查、改‘显示)    http://blog.csdn.net/guoqianqian5812/article/details/41381645博文,那末大家肯定知道怎样完成插入1个学生信息的,只要大家知道那末下面批量将输入导入数据库就很好实现了,这个方法就是在通过fgets函数读取文件里的内容,每读取1行,然后用strtok函数将其分割开,获得有用的数据段传到C  API函数哪里(insert函数),然后用sprintf函数将其格式化写入履行语句下面就和c语言操作数据库“增”1样了。



代码以下:


#include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql.h> MYSQL mysql; /******通过insert into命令将数据批量导入数据库******/ void insert(char *a,char *b,char *c) { int t,r; char query[400]; memset(query,0,400); sprintf(query,"insert into EnglishWord4(Words,Translate,Num) values('%s','%s','%s')",a,b,c);//插入哪一个表 printf("正在履行:%s ",query); t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("履行插入时出现异常: %s",mysql_error(&mysql)); } else { printf("添加成功 "); } } int main() { FILE *fp; char buff[300]; fp=fopen("englishword4.txt","r");//打开不同的文件 if(fp==NULL) { printf("Fail to open "); exit(1); } MYSQL_RES *res; MYSQL_ROW row; mysql_init(&mysql); if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "English",0,NULL,0)) { printf( "Error connecting to database: %s",mysql_error(&mysql)); } else { printf("Connected... "); } char *p; char a[20]; char b[200]; char c[10]; int length = 0; while(fgets(buff,300,fp)!=NULL) { if(buff[strlen(buff)⑴]==' ') { buff[strlen(buff)]=''; } strcpy(a,strtok(buff,"#")); int i=0; while((p=strtok(NULL,"#"))) { if(i==0) { //printf("跳过 "); } if(i==1) { strcpy(b,p); } if(i==2) { strcpy(c,p); } ++i; } length = strlen(c); c[length⑵]=''; insert(a,b,c); bzero(a,sizeof(a)); bzero(b,sizeof(b)); bzero(b,sizeof(c)); } mysql_close(&mysql); fclose(fp); return 0; }


附加1个操作的表大家可以试试,这是我的格式

a#[ei]#art. 1;任1;每#1 able#['eibl]#adj. 能#1 about#[?'baut]#prep. 关于#1 above#[?'b?v]#prep. 在...上面 #1 act#[ækt]#vt. 行动#1 add#[æd]#vi. 加;增加#1 afraid#[?'freid]#adj. 惧怕的#1 after#['
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐