其實原理很簡單,想必大家應該都看了我寫的那篇(一個代碼學會c語言操作數據庫)linux上通過c語言操作數據庫實現基本的學生信息管理系統(增、刪、查、改‘顯示) http://blog.csdn.net/guoqianqian5812/article/details/41381645博文,那麼大家肯定知道怎麼完成插入一個學生信息的,只要大家知道那麼下面批量將輸入導入數據庫就很好實現了,這個方法就是在通過fgets函數讀取文件裡的內容,每讀取一行,然後用strtok函數將其分割開,獲取有用的數據段傳到C API函數哪裡(insert函數),然後用sprintf函數將其格式化寫入執行語句下面就和c語言操作數據庫的“增”一樣了。
代碼如下:
[plain] view plaincopyprint? #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\n",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 open\n"); 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)]='\0'; } 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]='\0'; 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
結果:
啟動查找表格結果
建立被導入數據的表和顯示內容
執行插入程序:
查看插入後的表的內容