数据库sqlite3


数据库(DataBase,简记为DB)就是一个有结构的集成的可共享的统一管理的数据集合。
数据库管理系统的特点:1.面向应用,2.记录之间没有联系,3.最小存储单位是数据记录

数据库系统的三级模式结构:外模式,内模式,模式
外模式:和人交互,属于用户模式,模式的子集
模式:当前数据库内所有资源的一种表示。(概念性)
内模式:数据库在内部的物理存储方式。(物理级)
一个数据库只有一个内模式

  • 关系型数据库
关系:一个关系就是一张二维表,R表示关系的名称
元组:一行就是一个元组,对应一个记录
属性:一列就是一条属性,及字段
域:属性的取值范围
关系的候选键与主键
某一列的值能唯一标识一行,则这一列为候选键。从候选键中选出一列来确定某行,称该候选键为主键
候选键有多个,主键只有一个
外键:若表R1中的一列对应表R2中的主键,则该列成为表R1的外键

数据库系统在三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统的数据能够具有较高的逻辑独立性和物理独立性。

  • 创建数据库:
v1.数据库文件格式:test.db

sqlite3 test.db 

sqlitecreate table test (id integer primary key, value text);

创建表名为test的表,primary key 为主键

名为id的主键列:该列默认具备自动增长的属性;
名为value的简单文本域;
v
插入操作:
vsqliteinsert  intotest idvalue) values1,’zhang’;
vsqliteinsert  intotest idvalue) values2,’wang’;
vsqliteinsert  intotest  (value)  values(‘liang’);
vsqliteinsert  intotest  (value)  values(‘liang’);
v
查看数据:
vsqliteselect * from test;
改表名,增加字段
alter table      tablename |  rename to "新表名" 
增加字段
add column    number(字段名) interger(类型)
删除记录
delete from tablename where '条件'
删除字段
1 create table temp as select id,name from mytable;
2 drop table mytable;
3 alter table temp rename to mytable;
退出:
vsqlite.exit
v
.database 查看数据库
.tables 查看表
.schema 查看表结构
.mode column 换格式
.head on 开表头
.q 退出

vsqlite常用类型
VARCHAR(n)
CHAR(n)
INTEGER
REAL
BLOB
TEXT
DATA
TIME
字符长度<=n字符长度=n
整型
实型
输入类型不做转换
文本
日期
时间
vselect格式

SELECT<目标列名序列>

FROM<数据源>

[WHERE <检索条件表达式>]

[GROUP BY <分组依据列>]

[HAVING <分组提取条件>]

[ORDER BY<排序依据列>]


vc语音中使用sqlite数据库的方法
vint sqlite3_open(const char* fileName, sqlite3** ppDB);
v函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。
v输入参数:fileName,要打开的数据库名,字符串
v输出参数:ppDB,返回指向创建的数据库的指针;
v返回值:执行成功返回SQLITE_OK,否则返回其他值

v函数原型:
vint sqlite3_close(sqlite3* pDB);
v函数功能:关闭一个打开的数据库;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:执行成功返回SQLITE_OK,否则返回其他值

v函数原型:
vconst char *sqlite3_errmsg(sqlite3* pDB);
v函数功能:获取最近调用的API 接口返回的错误说明,这些错误信息UTF-8的编码返回,并且在下一次调用任何SQLite API 函数时被自动清除;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:错误说明的字符串指针

v函数原型:
vint sqlite3_errcode(sqlite3* pDB);
v函数功能:获取最近调用的API 接口返回的错误代码;
v输入参数:pDB,打开的数据库句柄
v输出参数: 无
v返回值:错误代码

v函数原型:
vint sqlite3_exec(sqlite3* pDBconst char *sqlsqlite_callback callback, void*para, char** errMsg);
v函数功能:编译和执行SQL 语句,查询的结果返回给回调函数callback
v输入参数:pDB,数据库指针
sql,待执行的SQL 语句字符串
callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert 或者delete 操作时),可以输入NULL
para,传给回调函数的参数,可以为NULL
v输出参数:errMsg,返回错误信息,注意是指针的指针。
v返回值:执行成功返回SQLITE_OK,否则返回其他值

v回调函数sqlite_callback介绍:
vtypedefint (*sqlite_callback)(void* para,int columnCount,char** columnValue,char** columnName);
v函数功能:由用户处理查询的结果
v输入参数:para,sqlite3_exec()传入的参数指针;
columnCount, 表的列数
columnValue,列值(多个)
columnName,列名
v输出参数:无
v返回值:执行成功返回SQLITE_OK,否则返回其他值
回调函数返回值必须是 return 0;

不使用回调函数的数据库操作API:

v函数原型:
vint sqlite3_get_table(sqlite3* pDBconst char *sql,char ***pResultint * rowCount,int * columnCount, char** errMsg);
v函数功能:执行SQL 语句,通过一维数组返回结果;一般用于数据记录查询
v输入参数:pDB,打开的数据库句柄;
sql,SQL指令
v输出参数:rowCount,查出行数;
columnCount,查出列数;
errMsg,返回错误信息;
pResult,在内存中存放查询结果,第一行为表头,通过一维数组方式访问二维数组
返回的row不算表头,显示时row 要+1;
v返回值:执行成功返回SQLITE_OK,否则返回其他值

v函数原型:
vvoid sqlite3_free_table(char **result);
v函数功能:释放查询结果占用的内存;
v输入参数:result,通过函数sqlite3_get_table()查询到的记录结果
v输出参数:无
v返回值:无

v 函数原型:
v int  sqlite3_prepare(sqlite3*  pDB const  char*  sql  ,  int  maxSqlLen,sqlite3_stmt**  ppStmt const  char** pTail );
v 函数功能 : SQL  语句编译成 SQLite  能够识别的二进制字节码(也即 SQL 声明, statement ),结果保存在 ppStat 中。注:输入的参数中只有第一个 SQL 语句会被编译。 SQL  语句间通过分号‘;’分隔。
v 输入参数: pDB ,数据库句柄; sql ,待编译的 SQL  语句字符串;

     maxSqlLen,SQL语句的最大长度,如果此值小于0SQLite 会自动计算字符串长度;

v 输出参数: ppStmt ,编译后 SQL  语句存放位置; pTail ,未编译的 SQL  语句的起始位置,一般输入 NULL  就可以了。
v 返回值:执行成功返回 SQLITE_OK ,否则返回其他值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值