Linux C 实现sqlite3数据库的基本操作

12 篇文章 0 订阅
5 篇文章 0 订阅

一、数据库简介

        SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头了. SQLite也迎来了一个版本 SQLite 3已经发布.  
 
        SQLite是一款轻型的数据库,是遵守ACID的关系式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

二、数据库指令

创建表:create table XXX(name text, passwd text)       

向表中插入数据:insert into XXX values("jack", "ps666")      

查询表中数据:select * from XXX;   

删除指定记录项:delete from XXX where name  = "rose"

删除表:drop table XXX

三、sqlite3相关接口函数

1、打开数据库——sqlite_open()

int sqlite3_open(const char *filename, sqlite3 **ppDb)
/*********************************************************************************  
* Description:  打开数据库
* Input:         filename:数据库路径名  ppDb:代指打开的数据库(打开的数据库句柄)
* Return:        成功返回 SQLITE_OK 
				 失败返回 错误码
* Others:        不存在,则创建
**********************************************************************************/

2、执行sql语句——sqlite_exec()

int sqlite3_exec(sqlite3* ppDb, const char *sql, sqlite_callback, void *data, char **errmsg)
/*********************************************************************************  
* Description:  执行sql语句
* Input:         ppDb:为刚才使用sqlite3_open打开的数据库链接
				 sql: sql语句
				 sqlite_callback:回调函数 用于查询 不关心写NULL
				 data: 回调函数的参数  不关心写NULL
				 errmsg:返回的错误信息
* Return:        成功返回0 失败返回错误码
* Others:       
**********************************************************************************/

3、关闭数据库——sqlite_close()

int sqlite3_close(sqlite3 *ppDb);
/*********************************************************************************  
* Description:  关闭数据库
* Input:         ppDb:为刚才使用sqlite3_open打开的数据库链接
* Return:        
* Others:       
**********************************************************************************/

四、代码演示

/*===============================================================
*   Copyright (C) 2022 All rights reserved.
*   
*   文件名称:sqlite3.c
*   创 建 者:QiuCC
*   创建日期:2022年08月20日
*   描    述:
*
*   更新日志:
*
================================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <strings.h>
#define N 100

int main(int argc, char *argv[])
{
    //创建数据库句柄db
	sqlite3 *db;

    //使用数据库句柄打开数据库
	int ret = sqlite3_open("./my.db", &db);
	if(ret < 0)
	{
		perror("打开数据库");
		exit(-1);
	}

    //用于存放数据库中需要执行的数据库指令
	char sql[N] = "create table if not exists stu_table(name text, score int);";
	
	char *errmsg;
	ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if(ret != 0)
	{
		printf("sqlite3_exec:%s\n", errmsg);
		exit(-1);
	}
	
    //拷贝指令到sql中将数据进行写入
	strcpy(sql, "insert into stu_table values ('lisi', 86);");
	ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if(ret != 0)
	{
		printf("sqlite3_exec:%s\n", errmsg);
		exit(-1);
	}
	
	strcpy(sql, "insert into stu_table values ('zhangsan', 91)");
	ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
	if(ret != 0)
	{
		printf("sqlite3_exec:%s\n", errmsg);
		exit(-1);
	}
	
    //关闭数据库
	sqlite3_close(db);

	return 0;
}

五、结果展示

        从上述结果中可以看出,我们成功的将创建了一张成绩的表,并且内部数据均正确,这里值得注意的是,我们的数据库命令在输入完成时一定要加上分号,不然就无法正确执行。 

好的,以上就是本期内容了!!!

欢迎大家参考指正!!!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖尾猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值