数据类型
REAL:浮点值 TEXT:文本字符串 INTEGER:带符号整形
数据库的操作
创建数据库:sqlite3 DataName.db
创建表:create table demo(id integer,name text)
查看表:select 列名称 from 表名称 where 条件 like '%%s%'
插入表:insert into zhiguoxin values(1001,'刘尧',18);
数据库的函数接口
打开数据库:
int sqlite3_open(
const char *filename, /* 数据库的文件路径 */
sqlite3 **ppDb /* 代表打开数据库 */
);
执行SQL语句:(回调函数,处理SQL语句执行返回的结果(查询),一条结果调用一次)
int sqlite3_exec(
sqlite3 *pDb, /* 打开的数据库 */
const char *sql, /* 要执行的SQL语句 */
int (*callback)(void *arg,int col,char **str,char **name),
/* 回调函数,处理SQL语句执行返回的结果(查询),一条结果调用一次
arg - exec的第四个参数
col - 本条结果的字段数
str - 记录字段值的数组
name - 记录字段名的数组
回调函数必须返回SQLITE_OK */
void *arg, /* 传递给回调函数的第一个参数 */
char **errmsg /* 错误信息 */
);
//成功返回SQLITE_OK,否则执行失败
关闭数据库:sqlite3_close(sqlite3 *pDb)
编译 SQL 语句:sqlite3_prepare_v2(准备好一个语句对象,以便稍后执行和绑定参数)
执行准备好的语句对象:sqlite3_step(一次执行一步)
将整数值绑定到 SQL 语句中的参数位置:sqlite3_bind_int
释放准备好的语句对象:sqlite3_finalize
性能提升
如果向数据库中插入100万条数据,在默认的情况下如果仅仅是执行sqlite3_exec(db, “insert into name values ‘lxkxf', ‘24'; ”, 0, 0, &zErrMsg);将会重复的打开关闭数据库文件100万次,所以速度会很慢。
事务机制
开始事务qlite3_exec(db, "BEGIN;", NULL, NULL, &zErrMsg);
执行SQL语句】】......
提交事务sqlite3_exec(db, "COMMIT;", NULL, NULL, &zErrMsg);
回滚sqlite3_exec(ppdb, "rollback",NULL,NULL,NULL);
这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。
增加主键的优缺点
- 优点:提高数据唯一性、完整性和查询性能;
- 缺点:则可能包括在现有数据上添加主键时的复杂性(如处理重复值)、对插入性能的影响(尤其是使用AUTOINCREMENT时),以及在大数据集上添加主键可能导致的额外资源消耗。