sqlite
sukhoi27smk
学习是为了探索这个世界的本质
展开
-
Sqlite SQL格式化输入函数splite3_mprintf
sqlite中,在使用sql语句写入字符串数据时,由于字符数据中可能隐含转义字符,如果对于他们不作处理,执行时,exec函数将不识别,或者造成注入攻击这个时候sqlite_mprintf(),应该就是必须使用了,配合‘%q’将字符数据中的转义字符,直接转换,就不用担心字符串中含有‘单引号,这样造成sql语句不识别的问题。For example, assu转载 2014-12-11 13:53:38 · 4170 阅读 · 0 评论 -
关闭SQLite3中的journal暂存档
相信很多使用SQLite3当做数据库的人都会一个现象,那就是当SQLite3有做写入的动作时,SQLite3会自动产生一个名为"数据库名称-journal"的暂存档。这是做什么用的呢?答案是用来Rollback ,换句话说,就是当数据写入数据库有失败动作时,透过journal档案予以复原到未更动前(原始)数据,来确保数据完整与一致性。如果在每次写入的时间很长或频繁的进行数据库写入情况下转载 2015-08-21 21:32:40 · 1910 阅读 · 0 评论 -
SQLite多线程使用总结
SQLite支持3种线程模式: 单线程:这种模式下,没有进行互斥,多线程使用不安全。禁用所有的mutex锁,并发使用时会出错。当SQLite编译时加了SQLITE_THREADSAFE=0参数,或者在初始化SQLite前调用sqlite3_config(SQLITE_CONFIG_SINGLETHREAD)时启用。 多线程:这种模式下,只要一个数据库连接不被多个线程同时使用就是安全转载 2015-08-10 15:41:11 · 791 阅读 · 0 评论 -
sqlite sqlite3_bind_int sqlite3_bind_text
sqlite3_bind_int sqlite3_bind_text这两个函数给“准备语句”绑定参数。其中函数的第二个参数是字段的编号。此编号是从1开始,而不是从0开始。查看sqlite3的源码,可以看到这两个函数都调用了 vdbeUnbind 函数。查看vdbeUnbind函数,在这个函数中有以下几句if( i p->nVar){ sqlite3E原创 2014-12-11 13:18:29 · 12980 阅读 · 0 评论 -
sqlite3_column
这个过程从执行sqlite3_step()执行一个准备语句得到的结果集的当前行中返回一个列。每次sqlite3_step得到一个结果集的列停下后,这个过程就可以被多次调用去查询这个行的各列的值。对列操作是有多个函数,均以sqlite3_column为前缀const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);int sqlite3_转载 2014-12-12 16:35:54 · 9832 阅读 · 0 评论 -
Sqlite3_prepare
这个函数将sql文本转换成一个准备语句(prepared statement)对象,同时返回这个对象的指针。这个接口需要一个数据库连接指针以及一个要准备的包含SQL语句的文本。它实际上并不执行(evaluate)这个SQL语句,它仅仅为执行准备这个sql语句函数定义(仅列出UTF-8的)int sqlite3_prepare( sqlite3 *db, /* D转载 2014-12-12 16:23:04 · 14238 阅读 · 0 评论 -
Linux下,sqlite简单实例
#include "stdlib.h"#include "stdio.h"#include "sqlite3.h"int main(){ charcSql[1024] = {0}; sqlite3*pSql = NULL; char *pError= NULL; int i = 0, j= 0; char**ppTabl转载 2014-12-12 16:17:39 · 1249 阅读 · 0 评论 -
sqlite3_finalize sqlite3_close
sqlite3_finalize int sqlite3_finalize(sqlite3_stmt *pStmt);这个过程销毁前面被sqlite3_prepare创建的准备语句,每个准备语句都必须使用这个函数去销毁以防止内存泄露。在空指针上调用这个函数没有什么影响,同时可以准备语句的生命周期的任一时刻调用这个函数:在语句被执行前,一次或多次调用sqlite_reset之后,或转载 2014-12-12 16:37:01 · 9321 阅读 · 1 评论 -
sqlite3_setp
这个过程用于执行有前面sqlite3_prepare创建的准备语句。这个语句执行到结果的第一行可用的位置。继续前进到结果的第二行的话,只需再次调用sqlite3_setp()。继续调用sqlite3_setp()知道这个语句完成,那些不返回结果的语句(如:INSERT,UPDATE,或DELETE),sqlite3_step()只执行一次就返回函数定义int sqlite3_step(sq转载 2014-12-12 16:34:23 · 1738 阅读 · 0 评论 -
sqlite3_exec
函数:sqlite3_exec(),称为便捷函数,封装了好多任务。 函数声明: int sqlite3_exec( sqlite * , const char * sql , sqlite_callback , void *data , char ** errmmsg) ; 其中 sqlite* 表示打开的数据库; sql转载 2014-12-11 14:01:54 · 20685 阅读 · 0 评论 -
使用SQLite3存储和读取数据
SQLite3是嵌入在iOS中的关系型数据库,对于存储大规模的数据很有效。SQLite3使得不必将每个对象都加到内存中。基本操作:(1)打开或者创建数据库sqlite3 *database;int result = sqlite3_open("/path/databaseFile", &database);如果/path/databaseFile不存在,则创建它,否则打开它。转载 2014-12-11 15:15:26 · 1735 阅读 · 0 评论 -
sqlite3 journal
sqlite3默认会开启journal,为了进行rollback。但是在断电突然断电的情况下,journal文件很容易就损坏了。目前还没有发现数据库文件本身被损坏的情况。一旦journal文件损坏,就没法打开数据库文件了。但是可以把journal机制关闭。一旦journal文件损坏,还会造成文件系统损坏,journal文件都无法删除掉。对journal文件所在目录进行l原创 2015-08-21 23:20:58 · 6682 阅读 · 0 评论