一、 数据库的安装
1. 网络安装:
配置好网络源后
sudo apt-get install sqlite3
2.
使用给出的deb包安装:
Sudo dpkg -i *.deb
安装三个deb包
使用源码包安装:
解压:tar xzf sqlite-autoconf-3140100.tar.gz
执行./configure
执行make && make install
3.
执行sqlite3 -version进行测试
二、 sqllite命令
创建数据库:sqlite3 company.db
1.帮助:.help
2.退出sqlite3:.quit
3.显示当前打开的数据库文件:.database
4.显示数据库中所有表名:.tables
5.查看表的结构:.schema <table_name>
6.控制显示格式:.mode column .header on
三、SQLite 数据类型
表结构:行:记录 列:字段 值:字段值
每个存储在 SQLite 数据库中的值都具有以下存储类之一:
1.null:值是一个 NULL 值。
2.integer:值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中。
3.real:值是一个浮点值,存储为 8 字节的 IEEE 浮点数字。
4.text:值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
5.blob:值是一个 blob 数据,完全根据它的输入存储。
四、sql命令(以';'结尾)
1.创建表(主键)
create table table_name(
column1 datatype primary key,
column2 datatype,
column3 datatype,
.....
columnn datatype,
); //primary保证字段唯一性
实例:(not null 表示记录被插入时候字段不能为空)
下面是一个实例,它创建了一个 COMPANY 表,ID 作为主键,NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL:
create table company(
id int primary key not null,
name text not null,
age int not null,
address char(50),
salary real
);
2.删除表
drop table <table_name>
drop table company;
3.插入数据
3.1 指定列插入数据
insert into table_name (column1, column2, column3,...columnn) values (value1, value2, value3,...valuen);
3.2 所有列插入数据
insert into table_name values (value1,value2,value3,...valuen);
4.查询语句
查询所有
select * from table_name;
查询指定列
select column1, column2, columnn from table_name;
条件查找
select * from table_name where <表达式>
例:select * from company where id = 7;
5.删除记录
delete from table_name where [condition];
如果不使用条件,那么会删除整个表数据
举例:
删除ID=7的表
delete from company where id = 7;
6.修改
update table_name set column1 = value1, column2 = value2...., columnn = valuen where [condition];
如果不使用where指定条件,那么会更新所有的记录
五、linux编程接口
包含:#include<sqlite3.h>
编译方式:gcc sqlite1.c -lsqlite3
1.int sqlite3_open(char *path, sqlite3 **db);
功能:打开sqlite数据库,如果数据库不存在则创建它
path: 数据库文件路径
db: 指向sqlite句柄的指针
返回值:成功返回SQLITE_OK,失败返回错误码(非零值)
2.int sqlite3_close(sqlite3 *db);
功能:关闭sqlite数据库
返回值:成功返回SQLITE_OK,失败返回错误码
返回值:返回错误信息
3.执行sql语句接口
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:传递给回调函数的参数
errmsg:错误信息指针的地址
返回值:成功返回SQLITE_OK,失败返回错误码
回调函数:
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);
功能:每找到一条记录自动执行一次回调函数
para:传递给回调函数的参数(由 sqlite3_exec() 的第四个参数传递而来)
f_num:记录中包含的字段数目
f_value:包含每个字段值的指针数组(列值)
f_name:包含每个字段名称的指针数组(列名)
返回值:成功返回SQLITE_OK,失败返回-1,每次回调必须返回0后才能继续下次回调
4.不使用回调函数执行SQL语句
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int*nrow, int *ncolumn, char **errmsg);
功能:执行SQL操作
db:数据库句柄
sql:SQL语句
resultp:用来指向sql执行结果的指针
nrow:满足条件的记录的数目(但是不包含字段名)
ncolumn:每条记录包含的字段数目
errmsg:错误信息指针的地址
返回值:成功返回SQLITE_OK,失败返回错误码