SQLite 运行时限制(Run-time Limits)

SQLite 运行时限制(Run-time Limits),第1张

概述摘自:http://www.sqlite.org/c3ref/limit.html int sqlite3_limit(sqlite3*, int id, intnewVal);     该接口允许在连接的过程中(by connection basis),对连接(on a connection)的变量结构(various constructs)进行限制。第一个参数指定了被限制的设置或者查询的数据库

摘自:http://www.sqlite.org/c3ref/limit.html

int sqlite3_limit(sqlite3*,int ID,intnewVal);

该接口允许在连接的过程中(by connection basis),对连接(on a connection)的变量结构(varIoUs constructs)进行限制。第一个参数指定了被限制的设置或者查询的数据库的句柄。第二个参数指定了被限制的类别(categorIEs),该结构定义了一系列可被限制尺寸大小的结构变量(The second parameter is one of the limit categorIEs that define aclass of constructs to be size limited)。第三个参数是对该结构的新的限制。如下是定义的限制类别:

#define sqlITE_liMIT_LENGTH 0

#define sqlITE_liMIT_sql_LENGTH 1

#define sqlITE_liMIT_ColUMN 2

#define sqlITE_liMIT_EXPR_DEPTH 3

#define sqlITE_liMIT_COMPOUND_SELECT 4

#define sqlITE_liMIT_VDBE_OP 5

#define sqlITE_liMIT_FUNCTION_ARG 6

#define sqlITE_liMIT_ATTACHED 7

#definesqlITE_liMIT_liKE_PATTERN_LENGTH 8

#define sqlITE_liMIT_VARIABLE_NUMBER 9

#define sqlITE_liMIT_TRIGGER_DEPTH 10

#define sqlITE_liMIT_WORKER_THREADS 11

详细请参考:http://www.sqlite.org/c3ref/c_limit_attached.html

如果一个给定的限制值是一个负值,限制不会生效。对于每一个限制的类别,在编译的过程中,已经通过C的宏定义(变量名称为sqlITE_MAX_name,当然限制名称为sqlITE_liMIT_name),指定了该值的上限(a hard upper bound.如果指定的值超出了上限,就会将该值指定为上限(truncated to the hard upper bound CategorIEs.

不管限制值有没有改变,sqlite3_limit的返回值都是上一次的限制值。因此,如果我们想知道当前设 置的限制值是多少,就可以通过设置该函数的第三个参数,指定为-1,就可以查询该结构体的限制值是 多少。

例如:

intpermitexecutelength=sqlite3_limit(pdb,1,-1);
说明:返回当前允许执行的SQL语句的长度,保存在permitexecutelength变量中。
该设计既可以用于管理客户内部的数据库,也可以控制一些不可靠的访问数据来源。一个明显的例子就是网页浏览器,她自身拥有存储历史记录,并且将从网上下载的JavaScript脚本和本地的数据库进行分离(separatedatabasescontrolledbyJavaScriptapplicationsdownloadedofftheInternet).内部的数据库可以给一个很大的默认限制值。来自外部的访问数据库的源为了避免拒绝服务攻击,一般会给一个更加小的默认限制值。开发者可以调用sqlite3_set_authorizer()接口,来控制不可靠的SQL语句。可以使用max_page_countPRAGMA宏,来限制不可靠的脚本生成的数据库的大小。
总结

以上是内存溢出为你收集整理的SQLite 运行时限制(Run-time Limits)全部内容,希望文章能够帮你解决SQLite 运行时限制(Run-time Limits)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1179286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存