网络编程 day7 (导入数据库)

该代码示例展示了如何使用SQLite3库打开或创建数据库,创建表格,然后从名为dict.txt的文件中读取数据并将其插入到表中。主要涉及的函数有sqlite3_open(),sqlite3_exec()以及文件读取函数fopen()和fgets()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<strings.h>
#include<unistd.h>
#include<errno.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sqlite3.h>

void do_insert(sqlite3 * dp,char table[],int id,char word[],char ptr[]);
void do_delate(sqlite3 * dp,char table[],int id);
void do_update(sqlite3 * dp,char table[],int id,char word[],char ptr[]);
void do_select(sqlite3 * dp,char table[]);
int main(int argc, const char *argv[])
{
	//打开(或创建)一个数据库
	sqlite3 * dp;
	if(sqlite3_open(argv[1],&dp) != SQLITE_OK)
	{
		fprintf(stderr,"[%s]sqlite3_open [%d][%s]__%d__\n",\
				argv[1],sqlite3_errcode(dp),sqlite3_errmsg(dp),__LINE__);
		return -1;
	};
	printf("open [%s] success\n",argv[1]);

	char table[20] = "words";
	int id=1;
	char word[20] = "";
	char eg[100] = "";
	char ptr[100] = "";
	//创建一张表格
	printf("创建一张表格");
	char sql[128] = "";
	sprintf(sql,"create table if not exists %s (id int,word char,eg char);",table);
	//char *ptr = "create table stu (id int,word char,ptr float);"
	char * errmsg;
	if(sqlite3_exec(dp,sql,NULL,NULL,&errmsg))
	{
		fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);
		return -1;
	}
	int j=0,p=0;
	FILE* fr=fopen("./dict.txt","r");
	while(1)
	{

		if(NULL==fgets(ptr,sizeof(ptr),fr))
		{
			printf("copy success\n");
			break;
		}
		bzero(word,sizeof(word));
		j=0;
		while(ptr[j]!=' ')
		{
			word[j]=ptr[j];
			j++;
		}
		while(ptr[++j]==' ');
		p=0;
		bzero(eg,sizeof(eg));
		while(ptr[j]!='\n')
			eg[p++]=ptr[j++];

		printf("[%d] word==%s  eg==%s\n",id,word,eg);
		do_insert(dp,table,id++,word,eg);
	}
	fclose(fr);
	do_select(dp,table);
	//关闭数据库
	if(sqlite3_close(dp) != SQLITE_OK)
	{
		fprintf(stderr,"[%s]sqlite3_open [%d][%s]__%d__\n",\
				argv[1],sqlite3_errcode(dp),sqlite3_errmsg(dp),__LINE__);	
		return -1;
	}
	printf("close [%s] success\n",argv[1]);

	return 0;
}

void do_insert(sqlite3 * dp,char table[],int id,char word[],char ptr[])
{
	char sql[128] = "";
	sprintf(sql,"insert into %s values (%d,\"%s\",\"%s\");",table,id,word,ptr);
	char * errmsg;
	if(sqlite3_exec(dp,sql,NULL,NULL,&errmsg))
	{
		fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);
	}
}



int callBack(void *arg,int column,char **column_text,char **column_word)
{
	if(0 == *(int *)arg)
	{
		for(int i=0;i<column;i++)
		{
			printf("%s\t",column_word[i]);
		}
		putchar(10);
		*(int *)arg = 1;
	}
	for(int j=0;j<column;j++)
	{
		printf("%s\t",column_text[j]);
	}
	putchar(10);
	return 0;
}

void do_select(sqlite3 * dp,char table[])
{
	char sql[128] = "";
	sprintf(sql,"select * from %s;",table);
	char * errmsg;
	int flag = 0;
	if(sqlite3_exec(dp,sql,callBack,&flag,&errmsg))
	{
		fprintf(stderr,"sqlite3_exec:%s __%d__\n",errmsg,__LINE__);
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值