首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发之SQLite-C语言接口规范(二) —— Prepared Your SQL Statements

而之前的做法是返回一个通用的错误结果代码SQLITE_ERROR,而你不得不去调用sqlite3_reset()方法来查找问题。“v2”预编译接口中将会立即返回错误原因。     ...sqlite3_step()接口去执行预编译的语句,也会返回一些结果代码,下面介绍一些常用的结果代码:SQLITE_BUSY, SQLITE_DONE, SQLITE_ROW, SQLITE_ERROR...如果的语句不是提交并且执行一个内部显示的事务,那么重试之前你应该回滚事务。 SQLITE_DONE 意味着语句执行完成并且成功。...SQLITE_ROW 如果正在执行的SQL语句返回任何数据, 为了便于调用者处理,如果有数据,返回结果就是SQLITE_ROW。再次sqlite3_step()来检索数据的下一。...循环语句的最后一条语句,加上sqllite3_reset(), 那么这个循环就是一个死循环,读取的永远是第一个数据。

1K60
您找到你想要的搜索结果了吗?
是的
没有找到

SQLite3 Cpp基本使用

指定数据库连接可以读写 SQLITE_OPEN_CREATE 如果数据库不存在,则创建 … … 返回值: 成功/失败 关闭数据库 int sqlite3_close_v2(sqlite3*) 句柄...sqlite3_stmt* stmt = nullptr; // 执行stmt句柄 如果指令能查询到下一数据,就会返回SQLITE_ROW; 如果指令(例如写入数据)不需要返还数据,就会返还SQLITE_DONE...: 合法/非法 执行 int sqlite3_step(sqlite3_stmt*) 返回值: 成功/失败 清理语句句柄 int sqlite3_finalize(sqlite3_stmt *pStmt...) 返回值: 成功/失败 SQL语句 const char* sql_sentence = "select name,age from Persons where age<10"; 获取相应数据 API...* stmt = nullptr; // 执行stmt句柄 如果指令能查询到下一数据,就会返回SQLITE_ROW; 如果指令(例如写入数据)不需要返还数据,就会返还SQLITE_DONE

1.1K20

Sqlite3详细解读

=N 将记录指针移到数据表第N rs.absolutepage=N 将记录指针移到第N页的第一 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据 pagesize 的设置返回总页数...这个语句执行到结果的第一可用的位置,如需继续前进到结果的第二的话,只需再次调用sqlite3_setp() // 对于不返回结果的语句(如:INSERT,UPDATE,或DELETE...(如:INSERT,UPDATE,或DELETE),sqlite3_step()只执行一次就返回 // 返回SQLITE_BUSY表示暂时无法执行操作,SQLITE_DONE表示操作执行完毕,SQLITE_ROW...// 返回SQLITE_BUSY表示暂时无法执行操作,SQLITE_DONE表示操作执行完毕,SQLITE_ROW表示执行完毕并且有返回(执行select语句时)。...每次sqlite3_step得到一个结果集的列停下,这个过程就可以被多次调用去查询这个的各列的值。

3.6K10

玩转SQLite-11:C语言高效API之sqlite3_prepare系列函数

100 /* sqlite3_step产生一个就绪sqlite3_step() has another row ready */ #define SQLITE_DONE 101 /...形参5:是用于BLOB和字符串绑定的 析构函数,用于sqlite处理完blob或字符串之后处理它,一般可以设置为NULL。...int sqlite3_step(sqlite3_stmt *pStmt); 参数: pStmt:prepare语句编译出的sql语句实例 返回值: 这里再对几个常见的返回值进一步说明: SQLITE_DONE...,返回的数据一般很多,并且数据是按返回的,且每次只返回,其返回值为 SQLITE_ROW,所以需要重复调用sqlite3_step函数,直到sqlite3_step返回 SQLITE_DONE....2.6 sqlite3_column 该函数实例用于 查询(query)结果的筛选,返回当前结果的某1列。

1.4K30

swift 简易操作sqlite3 之 通用查询

上篇文章我们写了关于SQLite的简单操作和一些基本常识,对此陌生的童鞋可以参考之前的文章(swift简易操作sqlite3),今天我们在此基础上进一步加工处理,写出通用查询操作方法 关于查询语句中的通用常识...{ let result = sqlite3_step(stmt) if (result == SQLITE_ROW || result == SQLITE_DONE..._step(stmt) == SQLITE_ROW ) } return queryResult } } 对于statement来说内部存储的是查询多行查询数据...,我们需要按照step进行按遍历取到数据即可。...好了,通用的查询方法就基本完成,后续接着出通用数据插入方法,慢慢的把基本的CURD写完,之后会结合起来撸一个简易的SQLite操作库到时候希望大家多多支持…

1.4K10

SQLite】C++链接SQLite读数据乱码问题(非中文)

前言: 使用C++调用SQLite数据库进行数据读取,调用sqlite3_prepare_v2进行语句合法检查,使用sqlite3_column_count获取列数,然后调用sqlite3_step...具体问题: sqlite3_column_text的返回值为 const unsigned char*,于是我用const unsigned char*存,具体代码如下: //如果返回SQLITE_ROW...但是我发现,只有循环内直接访问,才能看到结果,除了这个循环就为乱码。 注意: 我是将SQLite的API又封装了下,这是其中的执行语句模块,上面声明的数据类型,是类中的成员变量。...);//获取列数 //如果返回SQLITE_ROW则,进行多次执行 for (result = sqlite3_step(m_stmt); result == SQLITE_ROW;...(m_tmp); m_tmp.clear(); counts++; } if (result == SQLITE_DONE) { sqlite3_finalize(m_stmt

55820

sqlite3的C语言使用(二)

其实sqlite3_exec也能执行select语句,而且也能获得返回值,其中第三个参数(是个回调函数)起到了很大作用。     回调函数,就是sqlite3_exec执行完成自动被调用的函数。...如果select返回多行数据,每返回回调函数将执行一次。(其中sqlite3_exec只用调用一次)     我来说明一下回调函数的各个参数。...回调函数中:     第一个参数是sqlite3_exec传进来的参数,也就是回调函数和外界交流的通道,比如我们可以传一个结构体指针地址进来,然后把查询到的数据保存在结构体中。    ...第二个参数是查询到的这一总字段数n(总列数)。     第三个参数是一个数组,从0到n-1保存着咨询结果,都是字符串。     第四个参数和第三个对应,是每个字段的字段名,也是字符串。    ...知道了回调函数的格式,我们就可以利用sqlite3_exec来查询数据库并用回调函数处理查询结果了。

1.5K20

CC++ 通过SQLiteSDK增删改查

callback: 回调函数,用于处理查询结果的每一数据。 callback_param: 传递给回调函数的参数。 errmsg: 用于存储错误消息的指针。...该函数的返回值表示执行的结果,可能的返回值包括: SQLITE_ROW: 成功获取一数据。 SQLITE_DONE: 执行完成,没有更多的数据可用(用于非查询语句)。...该函数返回指向字符串值的指针,该字符串值是查询结果集中指定列的文本表示。需要注意的是,返回的指针指向 SQLite 内部的存储区,应该在使用完之后尽早释放资源。...使用 sqlite3_prepare_v2 函数准备 SQL 语句,需要使用 sqlite3_finalize 来释放相应的语句对象。...打开数据库管理软件,可看到插入的记录; 查询与删除数据 而查询删除与增加记录,我们这里直接使用exec_sql()函数,通过传入不同的SQL语句实现。

27310

sqlite数据存储(2)

open() 和 sqlite3_open_v2() 使用 UTF-8 来解析文件名 sqlite3_open16() 使用 UTF-16 来解析文件名 返回值 : 成功 SQLITE_OK ,失败会返回错误代码.../* sqlite3_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite3_step() has finished...(*sqlite3_callback)(void*,int,char**, char**); 回调函数是作为 sqlite3_exec 第三个参数而存在的,它的作用在于处理返回的每条结果 一般而言,回调函数的返回结果都是...0,如果结果是非0,那么查询过程会中断,所有接下来的查询会中断并且跳过,sqlite3_exec() 的返回结果会是 SQLITE_ABORT 第一个参数 void* 由 sqlite3_exec()...传过来的第四个参数,作为自己的第一个参数 第二个参数 int 查询结果中当条记录的字段数 第三个参数 char** 字段名形成的字符串指针数组 第四个参数 char** 结果集形成的字符串指针数组 --

53630

使用iOS原生sqlite3框架对sqlite数据库进行操作

sqlite3_open(dataBaePath, &sqlite) sqlite3_open方法返回一个int值,实际上,使用libsqlite3框架中的大多方法时都会返回一个int值,这个int..._log() 的警告*/ #define SQLITE_ROW         100  /* sqlite3_step() 方法准备好了一数据 */ #define SQLITE_DONE        ..._prepare_v2()方法进行数据库查询的准备工作,第一个参数为成功打开的数据库指针,第二个参数为要执行的查询语句,第三个参数为sqlite3_stmt指针的地址,这个方法也会返回一个int值,作为标记状态是否成功...sqlite3_column_XXX()是取中每一列的数据,根据数据类型的不同,sqlite3_column_XXX()有一系列对应的方法,这个方法中第一个参数是stmt指针,第二个参数为列序号。... 可以为nil 则不排序  *  *  @param type 排序方式 YHBaseSQLTypeHeader中有宏定义  *  *  @param wlstr 查询条件 同于查询单个数据  *

2.1K10

Python SQLite 基本操作和经验技巧(一)

文章目录 1.插入单行数据 2.插入多行数据 3.判断sqlite是否存在某个表,不存在则创建 4.SQLite数据库中如何列出所有的表和索引 5.sqlite避免重复插入数据 6.sqlite3时游标的使用方法...一个 C/C++ 程序中(或者脚本语言使用 Tcl/Ruby/Perl/Python 等) 你可以一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有 表的索引。...通过游标扫SQL 查询并检查结果。游标连接支持更多的方法,而且可能在程序中更好用。 游标: cu = conn.cursor() 能获得连接的游标,这个游标可以用来执行SQL查询。...在上面的情况下,如果执行fetchone()会返回为空。这一点测试时需要注意。...conn.close() 可以每次修改数据库都进行提交,而不是仅仅在准备关闭才提交,准备关闭数据时,使用close 方法。

5.1K30

Python小白的数据库入门

") 26 27# 执行了查询语句查询的结果会保存到游标对象中,调用游标对象的方法可获取查询结果 28# 此处调用fetchall方法返回一个列表,列表中存放的是元组, 29# 每一个元组就是数据表中的一数据...,第一次调用fetchone()方法时,将游标从默认位置移动到第一 1# 调用游标对象的execute()方法执行查询语句 2cursor.execute("select * from students_info...") 3 4# 将游标移动到第一 5row = cursor.fetchone() 6 7# 当查询的结果集没有数据时,向下移动游标会返回空,如果不是空,说明有数据 8if row !...=None: 9 print(row) 一的手动去移动太太麻烦,可以使用循环 1# 将游标移动到第一 2row = cursor.fetchone() 3 4# 如果返回的结果集第一有数据...,通常只有确定返回的结果只有一条数据(即一)时,才会使用fetchone()方法,比如按id查询时,因为id是唯一的,查询的结果只可能有一条数据或者为空,不可能有多条,这时使用fetchone方法是非常好的

2K30
领券