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

正文內(nèi)容

[計(jì)算機(jī)軟件及應(yīng)用]sqlite-預(yù)覽頁(yè)

 

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