freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[計算機軟件及應用]sqlite-預覽頁

2024-09-12 16:27 上一頁面

下一頁面
 

【正文】 mn_type()函數(shù)返回第N列的值的數(shù)據(jù)類型. 具體的返回值如下: define SQLITE_INTEGER 1 define SQLITE_FLOAT 2 define SQLITE_TEXT 3 define SQLITE_BLOB 4 define SQLITE_NULL 5sqlite3_column_decltype() 則用來返回該列在 CREATE TABLE 語句中聲明的類型. 它可以用在當返回類型是空字符串的時候. sqlite3_column_name() 返回第N列的字段名. sqlite3_column_bytes() 用來返回 UTF8 編碼的BLOBs列的字節(jié)數(shù)或者TEXT字符串的字節(jié)數(shù). sqlite3_column_bytes16() 對于BLOBs列返回同樣的結果,但是對于TEXT字符串則按 UTF16 的編碼來計算字節(jié)數(shù). sqlite3_column_blob() 返回 BLOB 數(shù)據(jù). sqlite3_column_text() 返回 UTF8 編碼的 TEXT 數(shù)據(jù). sqlite3_column_text16() 返回 UTF16 編碼的 TEXT 數(shù)據(jù). sqlite3_column_int() 以本地主機的整數(shù)格式返回一個整數(shù)值. sqlite3_column_int64() 返回一個64位的整數(shù). 最后, sqlite3_column_double() 返回浮點數(shù).不一定非要按照sqlite3_column_type()接口返回的數(shù)據(jù)類型來獲取數(shù)據(jù). 數(shù)據(jù)類型不同時軟件將自動轉換. 用戶自定義函數(shù)可以使用以下的方法來創(chuàng)建用戶自定義的SQL函數(shù): typedef struct sqlite3_value sqlite3_value。 int sqlite3_value_bytes(sqlite3_value*)。 long long int sqlite3_value_int64(sqlite3_value*)。上面的函數(shù)調用以下的API來獲得上下文內容和返回結果: void *sqlite3_aggregate_context(sqlite3_context*, int nbyte)。 void sqlite3_result_error(sqlite3_context*, const char*, int)。 void sqlite3_result_null(sqlite3_context*)。 void *sqlite3_get_auxdata(sqlite3_context*, int)。 sqlite3_collation_needed(sqlite3*, void*, void(*)(void*,sqlite3*,int eTextRep,const char*))。1. 打開數(shù)據(jù)庫,創(chuàng)建表 sqlite * db。 sql = create table weblink(id integer primary key,domain text,page text,fromdomain text,status integer)。執(zhí)行一條 sql 語句的函數(shù)。第3個參數(shù)sqlite3_callback 是回調,當這條語句執(zhí)行之后,sqlite3會去調用你提供的這個函數(shù)。第5個參數(shù)char ** errmsg 是錯誤信息。sqlite3_exec函數(shù)通過修改你傳入的指針的指針,把你提供的指針指向錯誤提示信息,這樣sqlite3_exec函數(shù)外面就可以通過這個 char*得到具體錯誤提示。而當你做 select 時,就要使用回調,因為 sqlite3 把數(shù)據(jù)查出來,得通過回調告訴你查出了什么數(shù)據(jù)。select * from weblink 查詢命令 (查詢整個表的所有記錄)select * from weblink where page = %Q and domain=%Q :查詢命令(以子網(wǎng)頁名和域名為關鍵字)page,domain :通過函數(shù)傳遞進來的型參名(要查詢的數(shù)據(jù))4. 更新記錄sqlite3_mprintf(update weblink set status=%d where id=%d, status,id)。 查看表的記錄e). select count(*) from (表名) 。 版本... 1二、 SQLITE操作入門... 2(1) 基本流程... 2(2) SQL語句操作... 4(3) 操作二進制... 8(4) 事務處理... 10四、 后記... 25前序:Sqlite3 的確很好用。這里要注明,我是一個跨平臺專注者,并不喜歡只用 windows 平臺。下面我的代碼仍然用 VC 編寫,因為我覺得VC是一個很不錯的IDE,可以加快代碼編寫速度(例如配合 Vassist )。一、版本從 網(wǎng)站可下載到最新的 sqlite 代碼和編譯版本。如果單獨用此文件,是挺好的,省去拷貝一堆文件還擔心有沒有遺漏。如果個人水平較高,建議用些簡單的編輯器來編輯,例如 UltraEdit 或Notepad。int main( int , char** ){return 0。 extern “C” 括起來了,但是你遇到一個 .c 文件就自覺的再括一次,也沒什么不好。可以不管它。備份這個文件就備份了整個數(shù)據(jù)庫。從數(shù)據(jù)庫打開開始,sqlite就要為這個類型準備好內存,直到數(shù)據(jù)庫關閉,整個過程都需要用到這個類型。用這個函數(shù)開始數(shù)據(jù)庫操作。sqlite3 ** 參數(shù)即前面提到的關鍵數(shù)據(jù)結構。具體這些宏的含義可以參考 文件。int sqlite3_close(sqlite3 *)。 }//數(shù)據(jù)庫操作代碼//…//數(shù)據(jù)庫打開成功//關閉數(shù)據(jù)庫sqlite3_close( db )。int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callback, void *, 說了是關鍵數(shù)據(jù)結構。等下我們再看回調函數(shù)的寫法,以及這個參數(shù)的使用。執(zhí)行 sqlite3_exec 之后,執(zhí)行失敗時可以查閱這個指針(直接 printf(“%s\n”,errmsg))得到一串字符串信息,這串信息告訴你錯在什么地方。比如你做 insert 操作,做 delete 操作,就沒有必要使用回調。下面給個簡單的例子://sqlite3的回調函數(shù)// sqlite 每查到一條記錄,就調用一次這個回調 int LoadMyInfo( void * para, int n_column, char ** column_value, char ** column_name ){ //n_column是這一條記錄有多少個字段 (即這條記錄有多少列) //這里,我不使用 para 參數(shù)。for( i = 0 。 字段值:%s\n”,其中ID是一個自動增加的類型,以后insert時可以不去指定這個字段,它會自己從0開始增加result = sqlite3_exec( db, “create table MyTable_1( ID integer primary key autoincrement, name nvarchar(32) )”, NULL, NULL, errmsg )。}result = sqlite3_exec( db, “insert into MyTable_1( name ) values ( ‘騎單車’ )”, 0, 0, errmsg )。}//開始查詢數(shù)據(jù)庫result = sqlite3_exec( db, “select * from MyTable_1”, LoadMyInfo, NULL, errmsg )。有這些知識,基本上可以應付很多數(shù)據(jù)庫操作了。C++成員函數(shù)實際上隱藏了一個參數(shù):this,C++調用類的成員函數(shù)的時候,隱含把類指針當成函數(shù)的第一個參數(shù)傳遞進去。這可以通過 sqlite3_get_table 函數(shù)做到。是一個很普通的以\0結尾的char *字符串。第4個參數(shù)是查詢出多少條記錄(即查出多少行)。 sqlite3 * db。 char * errmsg = NULL。 int i , j。 result = sqlite3_open( “c:\\”, amp。dbResult, amp。if( SQLITE_OK == result ){ //查詢成功 //前面說過 dbResult 前面第一行數(shù)據(jù)是字段名稱,從 nColumn 索引開始才是真正的數(shù)據(jù) printf( “查到%d條記錄\n”, nRow )。 i++ ){ printf( “第 %d 條記錄\n”, i+1 )。 printf( “字段名:%s//關閉數(shù)據(jù)庫sqlite3_close( db )。但有一種情況,用上面方法是無法實現(xiàn)的:需要insert、select 二進制。為什么我把 “sql語句” 用雙引號引起來?因為你可以把 sqlite3_stmt * 所表示的內容看成是 sql語句,但是實際上它不是我們所熟知的sql語句。必須用 sqlite 提供的函數(shù)來插入。 blob )首先聲明 sqlite3_stmt * stat。第一個參數(shù)跟前面一樣,是個 sqlite3 * 類型變量,第二個參數(shù)是一個 sql 語句。如果小于0,sqlite會自動計算它的長度(把sql語句當成以\0結尾的字符串)。為0就可以了。第1個參數(shù):是前面prepare得到的 sqlite3_stmt * 類型變量。如果你有多個?號,就寫多個 bind_blob 語句,并改變它們的第2個參數(shù)就替換到不同的?號。第5個參數(shù):是個析夠回調函數(shù),告訴sqlite當把數(shù)據(jù)處理完后調用此函數(shù)來析夠你的數(shù)據(jù)。你現(xiàn)在可以把它保存到數(shù)據(jù)庫里:int result = sqlite3_step( stat )。跟前面一樣,先聲明 sqlite3_stmt * 類型變量:sqlite3_stmt * stat。int result = sqlite3_step( stat )。然后開始獲取第一個字段:ID 的值。這樣就得到了二進制的值。這樣, stat 結構又成為 sqlite3_prepare 完成時的狀態(tài),你可以重新為它 bind 內容。這個操作是很慢的。zErrorMsg )。一、給數(shù)據(jù)庫加密前面所說的內容網(wǎng)上已經有很多資料,雖然比較零散,但是花點時間也還是可以找到的。這里要提一下,雖然 sqlite 很好用,速度快、體積小巧。當然,如果你在嵌入式系統(tǒng)、智能手機上使用 sqlite,最好是不加密,因為這些系統(tǒng)運算能力有限,你做為一個新功能提供者,不能把用戶有限的運算能力全部花掉。我這里也不是說支付錢不好,如果只為了數(shù)據(jù)庫加密就去支付2000塊,我覺得劃不來。這個宏就是如果你用的是 VC 2003,你可以在“解決方案”里右鍵點擊你的工程,然后選“屬性”,找到“C/C++”,再找到“命令行”,在里面手工添加“/D SQLITE_HAS_CODEC”。如果你也用的是VC2003,那么會得到下面的提示:error LNK2019: 無法解析的外部符號 _sqlite3CodecGetKey ,該符號在函數(shù) _attachFunc 中被引用error LNK2019: 無法解析的外部符號 _sqlite3CodecAttach ,該符號在函數(shù) _attachFunc 中被引用error LNK2019: 無法解析的外部符號 _sqlite3_activate_see ,該符號在函數(shù) _sqlite3Pragma 中被引用error LNK2019: 無法解析的外部符號 _sqlite3_key ,該符號在函數(shù) _sqlite3Pragma 中被引用fatal error LNK1120: 4 個無法解析的外部命令這是正常的,因為Sqlite只留了接口而已,并沒有給出實現(xiàn)。通過參照他們的代碼以及不斷編譯中vc給出的錯誤提示,最終我把整個接口整理出來。這里要說一點的是,我另外新建了兩個文件:。/***********關鍵解密函數(shù)***********/int My_DeEncrypt_Func( unsigned char * pData, unsigned int data_len, const char * key, unsigned int len_of_key )。傳進來的參數(shù)分別是待處理的數(shù)據(jù)、數(shù)據(jù)長度、密鑰、密鑰長度。這里有個特點,data_len 一般總是 1024 字節(jié)。我直接貼代碼。所以要提前聲明。 ** malloc() must have already been made by this thread before it gets ThreadData *pTsd = sqlite3ThreadData()。 assert( pTsd amp。 sqlite3pager_free_codecarg(pPagerpCodecArg)。新版本對應函數(shù)是在 里定義(因為都合并到 )。這些代碼很長,我不再解釋,直接接上去就得了。DeriveKey 函數(shù)就是做這個擴展的。我不想這么做。在 DeriveKey 函數(shù)里,只管申請空間構造所需要的密鑰,不需要釋放,因為在另一個函數(shù)里有釋放過程,而那個函數(shù)會在數(shù)據(jù)庫關閉時被調用。當然,你必須按我前面提的,新建 和 文件,而且函數(shù)要按我前面定義的要求來做。加解密過程就在 sqlite3_open 后面操作。1
點擊復制文檔內容
外語相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1