基于C语言的SQlite3数据库操作指令

基本介绍

SQLite3是一个轻量级的嵌入式数据库引擎,它是一个自包含的、零配置的、服务器无关的、事务性的SQL数据库引擎。它是使用C语言编写的,可以直接在应用程序中嵌入,不需要单独的服务器进程。 

数据库的建立流程中的shell命令

1.在linux中安装sqlite3 数据库

2.创建并且打开一个sqlite3 数据库

sqlite3 +数据库名.db 有该数据库则进入,没有则创建

3.创建表 

create table:创建一张表, 就是设计表结构[列,列是有类型]
--语法:create table 表名 (列名1 数据类型1,列名2 数据类型2,....)
--例子, 学生表:学号-int  姓名-char  班级-int  性别-char 年龄-int
---create table student (num integer,name varchar,class integer,sex char ,age integer )  ;
--后面的图中 类型的后面的括号可以不写, 括号里面指定该数据的最大大小

 4.在表中添加属性和内容

5.表的增删改查 

C语言与sqlite3数据库的联合使用

使用c语言打开数据库实现以下功能:

#include <stdio.h>
#include <sqlite3.h>
// 回调函数,用于处理查询结果
int mysqlite3_callback(void *para, int f_num, char **f_value, char **f_name)
{
	static int flag = 0;
	int i;
	if (flag == 0)
	{
		for (i = 0; i < f_num; i++)
		{
			printf("%-12s", f_name[i]); // 打印字段名
		}
		printf("\n");
		flag = 1;
	}

	for (i = 0; i < f_num; i++)
	{
		printf("%-12s", f_value[i]); // 打印字段值
	}
	printf("\n");

	return 0;
}
int meun(void)   //打印菜单主页面
{
	int a,b,m ;
	for(a=0;a<30;a++)
	{
		printf("*");
	}
	printf("\n");
	printf("choose the num to choose func:");
	printf("\n");
	printf("0.return");
	printf("\n");
	printf("1.bian li the student data");
	printf("\n");
	printf("2.add a student");
	printf("\n");
	printf("3.delete a student");
	printf("\n");
	printf("4.bian li the teacher data");
	printf("\n");
	printf("5.add a teacher");
	printf("\n");
	printf("6.delete a teacher");
	printf("\n");
	printf("7.choose the students teacher who are fail in exam");
	printf("\n");
	for(b=0;b<30;b++)
	{
		printf("*");
	}
	printf("\n");
	return 0;
}





int main()
{	

	while(1)
	{
		meun();
		int a,b,m;	
		scanf("%d",&m);
		sqlite3 *mydb = NULL;
		int ret = sqlite3_open("./student.db", &mydb); // 打开数据库文件 student.db获取句柄
		if (ret != SQLITE_OK)//判断是否打开成功
		{
			printf("open sqlite failed\n");
			return -1;
		}
		char sql[1024];//定义一个buf


		if(m==0)//退出死循环
		{
			return 0;
		}

		if(m==1)
		{
			sprintf(sql, "select * from student;"); // 准备 SQL 查询语句

			sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询

			sqlite3_close(mydb); // 关闭数据库
		}

		if(m==2)
		{
			char *errmsg;
			sprintf(sql, "select * from student;"); // 准备 SQL 查询语句

			sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询
			char name[128];
			char sex[128];
			int num;
			int chenji;
			char sql[128];
			printf("please input the name:");
			scanf("%s",name);
			printf("please input sex:");
			scanf("%s",sex);
			printf("please input num:");
			scanf("%d",&num);
			printf("please input chenji:");
			scanf("%d",&chenji);

			sprintf(sql,"insert into student(name,sex,num,class)values('%s','%s',%d,%d);",name,sex,num,chenji);
			printf("%s\n",sql);
			if (sqlite3_exec(mydb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				printf("%s\n",errmsg);
			}

			sqlite3_close(mydb); // 关闭数据库
		
		}
           if(m==3)
		   
		   {
			   char *errmsg;
			   char name[128];
			   printf("请输入要删除的列名:");
			   scanf("%s",name);
			   sprintf(sql, "delete from student where name='%s';",name); // 准备 SQL 查询语句
			   sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询

			   sqlite3_close(mydb); // 关闭数据库
			   if(sqlite3_exec(mydb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			   {
				   printf("%s\n",errmsg);
			   }
		   }




           	if(m==4)
		{
			sprintf(sql, "select * from techar;"); // 准备 SQL 查询语句

			sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询

			sqlite3_close(mydb); // 关闭数据库
		}



			
		if(m==5)
		{
			char *errmsg;
			sprintf(sql, "select * from techar;"); // 准备 SQL 查询语句

			sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询
			char name[128];
			char sex[128];
			int n_num;
			int class;
			char sql[128];
			printf("please input the name:");
			scanf("%s",name);
			printf("please input sex:");
			scanf("%s",sex);
			printf("please input  n_num:");
			scanf("%d",&n_num);
			printf("please input class:");
			scanf("%d",&class);

			sprintf(sql,"insert into techar(name,sex,n_num,class)values('%s','%s',%d,%d);",name,sex,n_num,class);
			printf("%s\n",sql);

			if (sqlite3_exec(mydb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				printf("%s\n",errmsg);
			}

			sqlite3_close(mydb); // 关闭数据库
		
		}
         if(m==6)
		   
		   {
			   char *errmsg;
			   char name[128];
			   printf("请输入要删除的列名:");
			   scanf("%s",name);
			   sprintf(sql, "delete from techar where name='%s';",name); // 准备 SQL 查询语句
			   sqlite3_exec(mydb, sql, mysqlite3_callback, NULL, NULL); // 执行查询

			   sqlite3_close(mydb); // 关闭数据库
			   if(sqlite3_exec(mydb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			   {
				   printf("%s\n",errmsg);
			   }
		   }

		 if(m==7)
		 {
			 char * errmsg;
			 int i;	
			 int row;	
			 int col;
			 char **resultp;//结果
			 char sql[128];
			 if(sqlite3_get_table(mydb, "select techar.name ,student.name, techar.n_num ,student.chenji;",&resultp,&row,&col,&errmsg)!=SQLITE_OK)
			 {
				 printf("%s\n",errmsg);
			 }
			 for(i=0; i<(row+1)*col;i++)
			 {
				 printf("%-18s",resultp[i]);
				 if((i+1)%col == 0)//column   3
				 {
					 printf("\n");
				 }
			 }

		 }
	}
	return 0;
}

通过上述代码,实现对数据库的增删改查。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值