mysql c语言批量插入表数据_mysql上将文本上数据批量导入数据库c语言实现(CAPI)_MySQL...

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

代码如下:

[plain] view plaincopyprint?

#include

#include

#include

#include

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("正在执行:%sn",query);

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));

if(t)

{

printf("执行插入时出现异常: %s",mysql_error(&mysql));

}

else

{

printf("添加成功n");

}

}

int main()

{

FILE *fp;

char buff[300];

fp=fopen("englishword4.txt","r");//打开不同的文件

if(fp==NULL)

{

printf("Fail to openn");

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...n");

}

char *p;

char a[20];

char b[200];

char c[10];

int length = 0;

while(fgets(buff,300,fp)!=NULL)

{

if(buff[strlen(buff)-1]=='n')

{

buff[strlen(buff)]='';

}

strcpy(a,strtok(buff,"#"));

int i=0;

while((p=strtok(NULL,"#")))

{

if(i==0)

{

//printf("跳过n");

}

if(i==1)

{

strcpy(b,p);

}

if(i==2)

{

strcpy(c,p);

}

++i;

}

length = strlen(c);

c[length-2]='';

insert(a,b,c);

bzero(a,sizeof(a));

bzero(b,sizeof(b));

bzero(b,sizeof(c));

}

mysql_close(&mysql);

fclose(fp);

return 0;

}

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

[plain] view plaincopyprint?

a#[ei]#art. 一;任一;每一#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#['ɑ:ftə]#adv. 后来#1

again#[ə'ɡen]#adv.再一次#1

against#[ə'ɡenst]#prep. 反对#1

age#[eidʒ]#n. 年龄#1

ago#[ə'ɡəu]#adv. 以前#1

agree#[ə'ɡri:]#vt. 同意;赞成#1

air#[εə]#n. 空气#1

all#[ɔ:l]#adj. 全部的 n. 全部#1

allow#[ə'lau]#vt. 允许#1

also#['ɔ:lsəu]#adv. 也#1

always#['ɔ:lweiz]#adv. 总是;永远#1

am#[æm]#v. 是#1

among#[ə'mʌŋ]#prep. 在…中间;在…之中#1

an#[æn]#art. 一(在元音字母前)#1

and#[ænd]#conj. 和#1

anger#['æŋɡə]#n. 怒;愤怒;忿怒#1

animal#['æniməl]#n. 动物#1

answer#['ɑ:nsə]#vt. 回答#1

any#['eni]#adj. 任何的#1

appear#[ə'piə]#vi. 出现#1

apple#['æpl]#n. 苹果;家伙#1

are#[ɑ:]#v. 是(be的第二人称单复数现在式)#1

area#['εəriə]#n. 区域#1

arm#[ɑ:m]#n. 手臂#1

arrange#[ə'reindʒ]#vt. 安排#1

arrive#[ə'raiv]#vi. 到达#1

art#[ɑ:t]#n. 艺术#1

as#[æz]#conj. 因为#1

ask#[ɑ:sk]#vt. 问#1

at#[æt]#prep. 在#1

atom#['ætəm]#n. 原子#1

思想很简单

结果:

启动查找表格结果

a72003f4c20d49d5d9478af2731c4cf8.jpg

建立被导入数据的表和显示内容

2c1e8a519f6550a8de34102ae1efec74.png

执行插入程序:

0d61dbdbc474c526c25dc4de2ef1b119.jpg

查看插入后的表的内容

83729f68b0b8f8ef7e7840e249e76a22.jpg

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值