码迷,mamicode.com
首页 > 数据库 > 详细

SQLite 授权文件 auth.c

时间:2015-11-11 11:48:02      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:sqlite sqlite3_set_authorizer sqlite3authcheck

代码剖析

该文件包含了实现sliqte3_set_authorizer函数的代码。对于SQLite库来说,该功能

是可选的。嵌入式系统不需要该功能,可以通过预编译宏-DSQLITE_OMIT_AUTHORIZATION=1

来禁用该选项。实际上在VS的预编译选项中,添加SQLITE_OMIT_AUTHORIZATION即可!!

 

如果定义了SQLITE_OMIT_AUTHORIZATION宏,就会忽略该文件的所有代码

 

如下介绍两个重量级的函数:

int sqlite3_set_authorizer

(

 sqlite3 *db,

  int(*xAuth)(void*,int,const char*,const char*,const char*,const char*),

 void *pArg

)

设置或者清空访问授权函数

sqlite3_set_authorizer函数会将注册进来的授权函数的指针,传递给

数据库的句柄结构体sqlite3*db,并且也将该函数的第三个参数保存到句柄当中

千万不要想当然,句柄就是一个指针,可以指向一个结构体的指针。

实际上在这里有一个值得考虑的问题:如何防止死锁,一个锁她的最大范围

如何控制,在什么地方才需要真正的加锁!!

学习如何使用C语言,实现面向对象的编程思想,如何组织函数的处理结构

 

第三和第四个参数分别是当前正在访问的表名和列名,认证函数只能返回SQLITE_OK,SQLITE_DENY

SQLITE_IGNORE.如果返回SQLITE_OK,表示允许执行访问操作。SQLITE_DENY意味着SQL语句不会被执

行,sqlite3_exec函数将返回一个错误信息,SQLITE_IGNORE意味着SQL语句将被解析,但是尝试读

取,将返回空集合,尝试写将被忽略!!

 

int sqlite3AuthCheck

(

 Parse *pParse,

  intcode,

 const char *zArg1,

 const char *zArg2,

 const char *zArg3

)


SQLite 授权文件 auth.c

标签:sqlite sqlite3_set_authorizer sqlite3authcheck

原文地址:http://linuxstorm.blog.51cto.com/5218690/1711700

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!