Small. Fast. Reliable.
Choose any three.

SQLite C接口

获取URI参数的值

const char * sqlite3_uri_parameter(const char * zFilename,const char * zParam);
int sqlite3_uri_boolean(const char * zFile,const char * zParam,int bDefault);
sqlite3_int64 sqlite3_uri_int64(const char *,const char *,sqlite3_int64);
const char * sqlite3_uri_key(const char * zFilename,int N);复制代码

这些是实用程序例程,可用于自定义VFS实现,该例程检查数据库文件是否为包含特定查询参数的URI,如果是,则获取该查询参数的值。

这些接口的第一个参数(以下称为F)必须是以下之一:

如果F参数不是上述之一,则该行为是不确定的,并且可能是不希望的。与较新版本相比,旧版本的SQLite对无效F参数的容忍度更高。

如果F是合适的文件名(如上一段所述),并且P是查询参数的名称,则sqlite3_uri_parameter(F,P)返回P参数的值(如果存在)或NULL指针(如果P不存在)在F上作为查询参数出现。如果P是F的查询参数并且没有显式值,则sqlite3_uri_parameter(F,P)返回一个指向空字符串的指针。

sqlite3_uri_boolean(F,P,B)例程假定P是布尔参数,并根据P的值返回true(1)或false(0)。sqlite3_uri_boolean(F,P,B)例程返回true(1)如果查询参数P的值在任何情况下均为“是”,“ true”或“ on”之一,或者该值以非零数字开头。如果查询参数P的值在任何情况下均为“ no”,“ false”或“ off”之一,或者如果该值以数字零开头,则sqlite3_uri_boolean(F,P,B)例程返回false(0)。如果P不是F上的查询参数,或者P的值与上面的任何一个都不匹配,则sqlite3_uri_boolean(F,P,B)返回(B!= 0)。

sqlite3_uri_int64(F,P,D)例程将P的值转换为64位带符号整数,并返回该整数;如果P不存在,则返回D。如果P的值不是整数,则返回零。

sqlite3_uri_key(F,N)返回一个指向文件名F的第N个查询参数的名称(不是值)的指针,或者如果N小于零或大于查询参数的数量减去1,则返回NULL指针。 N值是从零开始的,因此N应该为0以获得第一个查询参数的名称,为第二个参数命名为1,依此类推。

如果F是NULL指针,则sqlite3_uri_parameter(F,P)返回NULL,而sqlite3_uri_boolean(F,P,B)返回B。如果F不是NULL指针,也不是SQLite核心传递给数据库指针的数据库文件路径名xOpen VFS方法,则此例程的行为是不确定的,并且可能是不希望的。

从SQLite版本3.31.0(2020-01-22)开始,除了主数据库文件之外,输入F参数还可以是回滚日志文件或WAL文件的名称。在3.31.0之前的版本中,仅当F是主数据库文件的名称时,这些例程才有效。当F参数是回滚日志或WAL文件的名称时,它可以访问与在主数据库文件中找到的所有相同查询参数。

有关其他信息,请参见URI文件名文档。

另请参见 对象常量函数的列表