********************sqlite数据库********************
1-- 安装数据库:
sudo dpkg -i *.deb
2-- 创建数据库
sqlite3 stu.db

必须事先指定数据库的名字

3-- sqlite命令

系统命令 以 "."开头

普通命令 ,以";"结束
.help 查看帮助信息
.quit 退出数据库
.exit 退出数据库
.databases 查看数据库
.schema 查看表的结构
.tables 显示数据库中所有的表的表名
4-- sqlite3 的使用
1-- 创建一张表
create table 表名(字段名称1 字段类型,字段名称2 字段类型, ....);
create table stu(id int, name char, sex char , score int);
2-- 向表中插入一条记录
insert into 表名 values (字段值1,字段值2,...);

insert into stu values(1001, 'zhangsan', 'm', 89);

insert into stu (id, name, sex,score) values(1002, 'lisi', 'm', 99);

3-- 查询记录

select * from stu;
// 查找所有的记录

select * from stu where id=1001; // 查找符号条件的记录

select * from stu where id=1001 and name='zhangsan';
// 字符串需要加引号

select * from stu where name = 'zhangsan' or score=92;
4-- 删除记录
delete from stu where id=1004;

5-- 更新记录

update stu set score=98 where id=1003;

6-- 删除一张表

drop table stu;
7-- 添加一列
alter table stu add column score int;

8-- 删除一列

sqlite3 不允许直接删除一列
1)先创建一张新表
create table stu1 as select id , name from stu;
2)删除原来的旧表
drop table stu;
3)对新表重命名
alter table stu1 rename to stu;

9-- 数据库主键(既设置的数据将会是唯一存在的)

create table usr(name text
primary key
, passwd text);
5-- sqlite3 API 函数接口

(1)sqlite3_open
int sqlite3_open(

const char *filename,
/* Database filename (UTF-8) */

sqlite3 **ppDb
/* OUT: SQLite db handle */

);

功能:打开或者创建一个数据库
参数:

filename 数据库名字

ppdb 操作数据库的指针,句柄。

返回值:
成功
SQLITE_OK

失败 error_code
例子:

sqlite3 *db;

if(sqlite3_open("stu.db", &db) != SQLITE_OK)
{
printf("%s\n", sqlite3_errmsg(db));
}

(2)sqlite3_errmsg
const char *sqlite3_errmsg(sqlite3* db);
功能:获取错误信息描述


(3)sqlite3_close
int sqlite3_close(sqlite3* db);
功能:关闭一个数据库

(4)sqlite3_exec
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 回调函数, 只有在查询语句

,才给回调函数传参

arg 为callback 传参的

errmsg 错误信息的地址
返回值:成功 SQLITE_OK
出错 errcode 错误码
***********************************************************

int (*callback)(void* arg ,int ncolumn ,char** f_value,char** f_name)

功能:得到查询结果
参数:arg 为回调函数传递参数使用的

ncolumn 记录中包含的字段的数目

f_value 包含每个字段值的指针数组
f_name 包含每个字段名称的指针数组
返回值:成功 0,出错 非0
*********************************************************
例子:

char *errmsg;

if(sqlite3_exec(db, "create table stu(id int, name char, score int)", NULL, NULL,&errmsg) != SQLITE_OK)
{
printf("%s\n", errmsg);
}
(5)sqlite3_get_table
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 */
);
功能:查询数据库,它会创建一个新的内存区域来存放查询的结果信息
参数:db 数据库操作句柄
sql 数据库的sql语句
azResult 查询的结果
nRow 行数
nColumn 列数
errmsg 错误消息
返回值:
成功 0
出错 errcode

nrow的值为查询到的符合条件的记录数(不包括字段名)。

ncolumn的值为查询到的符合条件的字段数。

注意:
nrow的值不包括字段名,如果打印时用for (i = 0; i < nrow; i++)会打印出字段名,但是会少打印出一条符合条件的记录。

因此打印时要用 for (i = 0; i <nrow + 1; i++);将包括字段名在内的数据都打印出来。


(6)void sqlite3_free_table(char **result);
功能:释放内存

sqlite数据库的基本用法及C语言的API接口简介的更多相关文章

  1. 【Win 10 应用开发】Sqlite 数据库的简单用法

    如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...

  2. 图解Win 10 应用开发之Sqlite 数据库的简单用法

    尽管目前 UWP-RT 库中还没有自带操作Sqlite数据库的API,不过,真要使用的话也不难,因为通过 Nuget ,我们其实可以获取很多支持 Sqlite 操作的第三方组件,当然了,组件虽多,但不 ...

  3. Go语言中使用SQLite数据库

    Go语言中使用SQLite数据库 1.驱动 Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的 https://github.com/mattn/go-sqlite3 ...

  4. SQLite 数据库介绍和基本用法

    Ø  简介 SQLite 是一款轻量级的关系型数据库,同时也是一种嵌入式数据库,与 Oracle.MySQL.SQL Server 等数据库不同,它可以内嵌在程序中,是程序中的一个组成部分.所以,经常 ...

  5. Android学习笔记--Sqlite数据库

    前几天学习了Android中的数据存储,包括文件存储,SharedPreferences存储,还有就是Acndroid中的特色:SQLite数据库存储了.让我比较惊讶的是Android中竟然内嵌了一个 ...

  6. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)

    sdCard:默认路径在 /storage/sdcard/... Android支持OpenFileOutput和openFileInput方式访问手机存储器上的文件. Context提供了如下两个方 ...

  7. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

  8. 【Android 应用开发】Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

  9. Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

随机推荐

  1. 总结开发中基于DevExpress的Winform界面效果

    DevExpress是一家全球知名的控件开发公司, DevExpress 也特指此公司出品的控件集合或某系列控件或其中某控件.我们应用最为广泛的是基于Winform的DevExpress控件组,本篇随 ...

  2. javaSE基础之变量,常量,作用域和运算符

    变量 变量是什么? 变量是可以变化得量 Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 type varName [=v ...

  3. xml editing in vi

    Auto complete tags xmledit installation: git clone https://github.com/sukima/xmledit.git, then make ...

  4. Shell-11-read命令

    read read命令从标准输入读取,并且把输入的内容赋值给变量 参数 示例 1 2 3 while 4 分别赋值变量

  5. Shell-04-流程控制

    if语句 1 单分支 2 双分支 示例 3 多分支 for语句 语法 for 变量名 in 取值表; do 语句 done 1 {...} 2 $@ 将位置参数当作独立的字符串来处理 3 $* 所有的 ...

  6. noip 模拟9 题解

    rp++==文化课报废 考试经过 先看T1,有被1e12吓到,但根据经验这很可能是水题,经过一番观察后直接打表,似乎看出了规律,觉得应该有了正解,写完之后顺利过掉大样例,但似乎时间稍慢一点,写上快读交 ...

  7. ITIL学习笔记——ITIL入门小知识

    1. 什么是ITIL? ITIL即IT基础架构库(Information Technology Infrastructure Library)由英国政府部门CCTA(Central Computing ...

  8. 最短路径 | 深入浅出Dijkstra算法(一)

    参考网址: https://www.jianshu.com/p/8b3cdca55dc0 写在前面: 上次我们介绍了神奇的只有五行的 Floyd-Warshall 最短路算法,它可以方便的求得任意两点 ...

  9. 一、web请求

    BS架构(Browser/Server) 客户端使用统一的浏览器(Browser) 服务端(Server)基于统一的HTTP协议 流程:用户浏览器输入URL地址–>DNS域名解析出IP地址–&g ...

  10. dubbo(一)

    1. Introduction 参考链接:https://www.baeldung.com/dubbo Dubbo is an open-source RPC and microservice fra ...