sqlite数据库操作

数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。

sqlite数据库:
是一种小型的关系型轻量级的嵌入式数据库。支持数据库大小至2TB;
足够小,全部源码大致3万行c代码,250KB,比目前流行的大多数数据库对数据的操作要快。

1-- 安装数据库:

     sudo dpkg -i  *.deb

2-- 创建数据库

     sqlite3  stu.db    //不存在则创建并打开  存在打开

3-- sqlite命令

     系统命令 以 "."开头
     普通命令 ,以";"结束 

     .schema  				查看表的结构
     .quit            退出数据库
     .exit/ctrl+d     退出数据库
     .help            查看帮助信息
     .databases       查看数据库
     .tables          显示数据库中所有的表的表名

4-- sqlite3 的使用

1-- 创建一张表
create  table 表名(字段名称1 字段类型,字段名称2  字段类型, ....); //加primary key 保证字段值的唯一性
create table stu(id int, name char, sex char , score int);
//如果是字段是字符串  加text/char/string修饰 
create table student(id int primary key,name text,score float);
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 tablename; //查询所有
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 tablename where <表达式>;
delete from stu where id=1004;
5-- 更新记录
update tablename set <表达式> ,<表达式> where <表达式>;
update stu set score=98 where id=1003;
6-- 删除一张表
drop table tablename;
drop  table  stu;
7-- 添加一列,增加字段
alter table tablename add column <字段名>  <字段类型>;
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 函数接口

sqlite3.h      -lsqlite3
(1int 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));
}2const char *sqlite3_errmsg(sqlite3* db);
功能:获取错误信息描述

(3int sqlite3_close(sqlite3* db);
功能:关闭一个数据库
参数:
		db:数据库的句柄
返回值:
		成功:0(SQLITE_OK)
		失败:-14int 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) < 0)
{
		printf("%s\n", errmsg);
}5int 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:行数不包括列表名,所以在打印所有数据时行数需要加1
		这个函数主要用于查询一条记录是否存在,如果记录存在,nRow结果为存在的次数,如果位0,则表示不存在

(6void sqlite3_free_table(char **result);
	功能:释放内存
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值