您好,登錄后才能下訂單哦!
原文:https://www.sqlite.org/c3ref/set_authorizer.html
?
int sqlite3_set_authorizer(
?sqlite3*,
? int(*xAuth)(void*,int,const char*,const char*,const char*,const char*),
?void *pUserData
);
該函數將注冊一個授權的回調函數到一個指定的數據庫句柄,第一個參數指定了數據庫句柄。當SQL 語句被sqlite3_prepare或者她的變體sqlite3_prepare_v2,sqlite3_prepare16,sqlite3_prepare166_v2等函數編譯的時候,就會調用該回調函數。在不同的編譯點上,執行不同的操作,授權回調函數將被執行,并且返回當前的操作是否合法(At various points during the compilation process,as logic is beingcreated to perform various actions ,the authorizer callback is invoked to seeif those actions are allowed).如果回調函數返回SQLITE_OK,表示允許執行該操作,SQLITE_IGNORE表示不允許該指定的操作,但是允許編譯,SQLITE_DENY將會返回一個錯誤,并且拒絕該操作的執行。如果回調函數返回其他的值,而不是上面三種類型的其中一種,sqlite3_prepare_v2函數將會觸發一個錯誤信息(then the sqlite3_prepare_v2() or equivalent call that triggered theauthorizer will fail with an error message.)
SQLITE_OK 允許SQL執行
SQLITE_DENY 拒絕SQL執行
SQLITE_IGNORE 允許SQL執行,但是嘗試讀取記錄集會返回NULL,嘗試寫入記錄集會被忽略
授權回調函數的第一個參數,將會由sqlite3_set_authorizer的第三個函數設置進去。第二個函數是一個整型的操作碼,指定了哪些操作是被允許的。第三到第六個參數是一個以零為結束符的字符串,這三個參數包含了哪些額外的操作細節是被授權允許的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。