欢迎投稿

今日深度:

mysql上将文本上数据批量导入数据库c语言实现(

mysql上将文本上数据批量导入数据库c语言实现(C API),mysqlapi


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



代码如下:


#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;
}


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

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

思想很简单


结果:

启动查找表格结果


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


执行插入程序:


查看插入后的表的内容








 

www.htsjk.Com true http://www.htsjk.com/shujukunews/4881.html NewsArticle mysql上将文本上数据批量导入数据库c语言实现(C API),mysqlapi 其实原理很简单,想必大家应该都看了我写的那篇 (一个代码学会c语言操作数据库)linux上通过c语言操作数据库实现基本...
评论暂时关闭