SQLite数据库概念与安装、基础知识、基本命令、API操作

 

常用数据库分类
分类包含
大型数据库Oracle IBM
中型数据库Server(微软,windows平台)
小型数据库MySQL(被sum收购,sum'被Oracle收购)

MySQL使用在网站中较多。

 

基于嵌入式Linux的数据库
数据库描述
Firebird关系型。功能强大,支持存储过程,SQL兼容
SQLite关系型。体积小,支持ACID事务
Berkeley DB无数据服务器概念,程序库直接链接到应用程序中
eXtremeDB内存数据库,运行效率高
  

SQlite特性:

  • 零配置,无须安装和管理配置
  • 储存在单一磁盘文件中的一个完整数据库
  • 数据库文件可以在不同字节顺序的机器间自由共享
  • 支持数据库大小至2TB
  • 足够小,全部源码大致3万行c代码,250KB
  • 比目前流行的大多数数据库对数据的操作要快

sqlite 不进行类型检查,即插入错误类型时,不检查

Linux下(Ubuntu)

SQlite3安装:

  1. 本地安装 sudo dnkg -i *.deb
  2. 在线安装 sudo apt-get install sqlite3

SQlite3基本命令:

         1. 系统命令:以“.”开始

                  .schema---查看表的结构图

                  .help--------帮助命令

                  .databases-----------查看当前打开的数据库

                  .table----------------查看当前打开数据库中的表

 

          2. sql命令:以“;”结尾

                   创建表格: create table table_name(字段名 字段类型,字段名 字段类型,···);

                   插入记录:insert into table_name values(对应字段值);----------------完全插入

                                       insert into table_name(字段1,字段2···) values(字段1值,字段2值···);------------部分插入

                   查询记录:select * from table_name;---------完全查询

                                     select 字段名 from table_name;-----------部分查询

                                     select * from table_name where XXX;---------条件查询

                   删除记录:delete from stu where XXX;------------条件删除;

                  更新记录: update table_name set 字段1=字段1值,字段2=字段2值,···【 where XXX】;

                  添加表的列: alter table tabe_name add column 字段名 字段类型;

                 删除表的列:SQLite3不支持删除一列,

                                        1.新建一张新表

                                        2.删除一张旧表

                                        3.新表改旧表名

                                       create table table_name1 as select 字段1,字段2 ···from tabel_name;

                                       drop table_name;

                                       alter table tabel_name1 rename to table_name;

SQlite编程接口   

接口官方信息:https://www.sqlite.org/c3ref/funclist.html           

int sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);

功能:打开一个sqlite数据库

参数:filename 数据库路径名

          ppDb 代表的是数据库的操作句柄(指针)

返回值:成功 SQLITE_OK,

             错误:错误代码

int sqlite3_close(sqlite3 *db)

              功能:关闭sqlite数据库

             返回值:成功 SQLITE_OK

                           错误 返回错误码

const  char *sqlite3_errmg(sqlite3*db)

功能:通过db句柄,得到数据库操作的错误信息  

返回值:返回错误信息首地址

 

int sqlite3_exec(

sqlite3*db,          /* An open database */

const char *sql,           /* SQL to be evaluated */

int (*callback)(void*,int,char**,char**),      /*Callback function */

void *arg,         /* 1st argument to callback */

char **errmsg              /* Error msg written here */

);

功能:执行一条sql语句

参数:db 数据库操作句柄

           sql 一条sql语句

           callback 回调函数,只有sql为查询语句的时候,才会执行此语句

           arg 给回调函数传参

           errmsg 错误消息

返回值:成功 SQLITE_OK

int (*callback)(void*para,int f_num,char**f_value,char**f_name),      /*Callback function */

查询的结构,是一个函数指针类型,传递一个函数名即可

功能:每找到一条记录,自动执行一次回调函数

参数:para  传递给回调函数的参数

           f_num 记录中包含的字段数目

           f_value  包含每个字段值的指针数组

           f_name  包含每个字段名称的指针数组

返回值:成功  返回0

              失败  返回-1

例子:sqlite3 *db;char * errmsg;

           sqlite3_exec(db,"create table stu ( id Integer,name char , score  Integer);",NULL,NULL,&errmsg)

           注:此处sql语句可以不加分号,也可以加分号。

           getchar();回收垃圾字符,一般为回车

           sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//拼接字符串

     

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 */
);

功能:执行sql操作

参数:db  数据库句柄

           zSql sql语句

           pazResult 用来指向sql执行结果的指针

           pnRow 满足条件的记录数据

           pnColumn 每条记录包含的字段述目

           errmsg  错误信息的指针地址

返回值:成功

              失败                        

printf("%-11s ",id);左对齐,右侧填空格,宽度为11

sqlite3_get_table()用完之后要立即释放空间

void sqlite3_free_table(char **result);

功能:释放空间

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值