SQLite3 基础

一、SQLite3 数据库的安装

1、安装
(1)本地安装

sudo dpkg -i *.deb

sudo -----以管理员身份执行
dpkg -----软件包管理器
-i -----安装
*.deb -----所有deb软件包

(2)在线安装

sudo apt-get install sqlite3

2、运行
在这里插入图片描述

二、SQLite 基本命令

1、系统命令
‘.’开头的命令

.help  	   ----帮助 
.exit  	   ----退出 
.quit  	   ----退出  
.schema	   ----查看表的结构图 

2、sql命令
(1)创建一张数据表 stu

表名(字段名 字段类型)

create table stu(id Integer, name char, score Integer);

(2)插入一条记录

insert into stu values(1001, 'zhangsan', 80);

插入部分字段的操作:

insert into stu(id, name) values(1001, 'zhangsan');

(3)查询记录

select * form stu;

查询部分字段:

select name,score from stu,

按指定条件查询:

select * from stu where score=80 and id=1001;

(4)删除记录

delete from stu where id=1;

(5)更新/修改记录

update stu set name=‘王五’ where id=100;
update stu set name=‘王五’,score=88 where id=100;

三、SQLite 进阶命令

1、系统命令

.database  ----查看打开数据库的路径
.table 	   ----查看表

2、sql命令
(1)插入一列

alter table stu add column address char;

.schema查看下表结构,可以看到多了一列

(2)删除一列
SQLite3不支持,直接删除一列
1)创建一张表,从旧表种提取字段
2)删除原有的表
3)将新的表名字改成原有的旧的表的名字

create table tmp as select id, name, score from stu;
drop table stu;
alter table tmp rename to stu;

四、SQLite3 编程接口

1、基本接口
https://www.sqlite.org/c3ref/funclist.html

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
功能:打开数据库
参数: ppDb 数据库的操作句柄(指针)
返回值:成功SQLITE_OK,失败错误码
int sqlite3_close(sqlite3*);
const char *sqlite3_errmsg(sqlite3*);
功能:打印错误信息
返回值:错误信息的首地址
int sqlite3_exec(
  sqlite3*,                                  /* An open database */
  const char *sql,                           /* SQL to be evaluated */
  int (*callback)(void*,int,char**,char**),  /* Callback function */
  void *,                                    /* 1st argument to callback */
  char **errmsg                              /* Error msg written here */
);
功能:执行一条sql语句
参数:sql	   一条sql语句
	 callback  回调函数,每找到一条记录自动执行一次回调函数
	 errmsg    错误消息

回调函数的功能:查询的结果,只有sql为查询语句的时候,才会执行此语句
回调函数的参数:void*  传递给回调函数的参数
               int    记录包含的字段数目
               char** 包含每个字段值的指针数组
               char** 包含每个字段名称的指针数组
回调函数的返回值: 成功返回0;失败返回-1

2、编写代码
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
getchar() 是为了消掉回车符
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
sqlite3_free(errmsg); 释放错误信息
if(errmsg != NULL)
{
sqlite3_free(errmsg); //这里需要用sqlite3_free去free,切忌!
}
3、不使用回调函数进行查询

int sqlite3_get_table(
  sqlite3 *db,          /* An open database */句柄
  const char *zSql,     /* SQL to be evaluated */
  char ***pazResult,    /* Results of the query */查询结果
  int *pnRow,           /* Number of result rows written here */行数
  int *pnColumn,        /* Number of result columns written here */列数
  char **pzErrmsg       /* Error msg written here */错误信息
);
void sqlite3_free_table(char **result);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gcc student.c -o student -lsqlite3 -lm

发布了56 篇原创文章 · 获赞 3 · 访问量 2379

猜你喜欢

转载自blog.csdn.net/qq_40674996/article/details/101443027
今日推荐