小。速度很快。可靠。
选择任意三个选项。

SQLite C接口

将值绑定到准备好的语句

int sqlite3_bind_blob(sqlite3_stmt*,int,const void*,int n,void(*)(void*));int sqlite3_bind_blob64(sqlite3_stmt*,int,const void*,sqlite3_ uint64,无效(*)(无效*));int sqlite3_bind_double(sqlite3_stmt*,int,double);int sqlite3_bind_int(sqlite3_stmt*,int,int);int sqlite3_bind_int64(sqlite3_stmt*,int,sqlite3_ int64);int sqlite3_bind_null(sqlite3_stmt*,int);int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int、void(*)(void*));int sqlite3_bind_text16(sqlite3_stmt*,int,const void*,int、void(*)(void*));int sqlite3_bind_text64(sqlite3_stmt*,int,const char*,sqlite3_ uint64,void(*)(void*),无符号字符编码);int sqlite3_bind_value(sqlite3_stmt*,int,const sqlite3_ value*);int sqlite3_bind_pointer(sqlite3_stmt*,int,void*,const char*,void(*)(void*));int sqlite3_bind_zerobb(sqlite3_stmt*,int,int n);int sqlite3_bind_zeroblob64(sqlite3_stmt*,int,sqlite3_ uint64);

在SQL语句文本输入中sqlite3_prepare_v2()及其变体,文字可以替换为参数符合以下条件之一模板:

在上面的模板中,NNN表示整数文本,VVV代表字母数字标识符。这些值参数(也称为“主机参数名称”或“SQL参数”)可以使用此处定义的sqlite3_bind_()例程进行设置。

sqlite3_bind_*()例程的第一个参数总是指向平方米3_stmt对象返回自sqlite3_prepare_v2()或其变体。

第二个参数是要设置的SQL参数的索引。最左边的SQL参数的索引为1。当相同名称SQL参数被多次、第二次和后续使用事件与第一个事件具有相同的索引。可以使用sqlite3_bind_parameter_index()API(如果需要)。索引对于“?NNN”参数,是NNN的值。NNN值必须介于1和sqlite3_limit()参数SQLITE_LIMIT_VARIABLE_NUMBER公司(默认值:32766)。

第三个参数是要绑定到参数的值。如果sqlite3_bind_text()或sqlite3_ bind_text16()的第三个参数或者sqlite3_bind_blob()是空指针,然后是第四个参数被忽略,最终结果与sqlite3_bind_null()相同。如果sqlite3_bind_text()的第三个参数不为NULL,那么它应该是指向格式良好的UTF8文本的指针。如果sqlite3_bind_text16()的第三个参数不为NULL,则它应该是指向格式良好的UTF16文本的指针。如果sqlite3_bind_text64()的第三个参数不为NULL,则它应该是指向格式良好的unicode字符串的指针如果第六个参数是SQLITE_UTF8,则为UTF8或UTF16否则。

的字节顺序UTF16输入文本由字节顺序标记(BOM、U+FEFF)确定在删除的第一个字符中找到,或在缺少BOM的情况下找到字节顺序是主机的本机字节顺序sqlite3_bind_text16()的机器或中指定的字节顺序sqlite3bindtext64()的第6个参数。如果UTF16输入文本包含无效的unicode字符,则SQLite可能会更改这些无效字符转换为unicode替换字符:U+FFFD。

在那些有第四个参数的例程中,其值为参数中的字节数。要明确:值是数量字节在值中,而不是字符数。如果sqlite3_bind_text()或sqlite3_ bind_text16()的第四个参数为负,则字符串的长度为直到第一个零终止符的字节数。如果sqlite3_bind_blob()的第四个参数为负数,则行为未定义。如果向sqlite3_bind_text()提供了非负的第四个参数或sqlite3_bind_text16()或sqlite3+bind_ttext64(),然后该参数必须是字节偏移量假设字符串为NUL,则出现NUL终止符结束。如果字节偏移量小于以下值时出现任何NUL字符第四个参数的值,则生成的字符串值将包含嵌入的NUL。包含字符串的表达式的结果带有嵌入NUL的未定义。

BLOB和字符串绑定接口控件的第五个参数或指示第三个参数引用的对象的生存期。存在以下三个选项:(1) 在SQLite完成后处理BLOB或字符串的析构函数它可能会被通过。调用它来处理BLOB或字符串如果对绑定API的调用失败,除非在以下情况下不调用析构函数第三个参数是NULL指针,或者第四个参数是负数。(2) 特殊常数,SQLITE_静态,可以传递以指示应用程序仍负责处理对象。在这个case,则对象和提供的指向它的指针必须保持有效,直到要么完成准备好的语句,要么完成相同的SQL参数与其他事物绑定,以较早发生者为准。(3) 常数,SQLITE_传输,表示对象将在从sqlite3bind_()返回之前复制。这个在此之前,对象和指向它的指针必须保持有效。然后SQLite将管理其私有副本的生存期。

sqlite3_bind_text64()的第六个参数必须是SQLITE_UTF8数据库,SQLITE_UTF16数据库,SQLITE_UTF16BE数据库,或SQLITE_UTF16LE数据库指定第三个参数中文本的编码。如果sqlite3_bind_text64()的第六个参数不是上面显示的允许值,或者如果文本编码不同根据第六个参数指定的编码,然后是行为未定义。

sqlite3_bind_zeroblob()例程绑定长度为N的BLOB用零填充。零blob使用固定数量的内存(只是一个整数以保持其大小)。Zeroblob用于作为以下BLOB的占位符内容稍后使用编写增量BLOB I/O日常工作。零BLOB的负值会导致零长度BLOB。

sqlite3_bind_pointer(S,I,P,T,D)例程导致准备好的报表S的SQL值为NULL,但也为与T.D类型的指针P相关联的是NULL指针或指向P.SQLite析构函数的指针将调用析构函数D在结束使用时具有单个参数PP.T参数应为静态字符串,最好是字符串字面意义的。sqlite3_bind_pointer()例程是指针传递接口为SQLite 3.20.0添加。

如果使用NULL指针调用任何sqlite3_bind_*()例程对于准备好的报表或准备好的声明sqlite3_step()最近被呼叫的次数超过sqlite3_reset(),然后电话会回来SQLITE_MISUSE公司.如果有sqlite3_bind_()例程被传递给准备好的报表已经定稿结果不明确,可能有害。

绑定未被清除sqlite3_reset()例行程序。未绑定参数被解释为NULL。

sqlite3_bind_*例程返回SQLITE_OK(SQLITE_OK)关于成功或错误代码如果出了什么问题。SQLITE_TOOBIG公司如果字符串或BLOB的大小为超过了sqlite3_限制(SQLITE_LIMIT_LENGTH公司)或SQLITE_MAX_长度.SQLITE_范围如果参数为索引超出范围。SQLITE_NOME公司如果malloc()失败,则返回。

另请参阅:sqlite3_bind_parameter_count(),sqlite3_bind_parameter_name()、和sqlite3_bind_parameter_index().

另请参见列表物体,常量、和功能.