久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 數(shù)據(jù)庫 > SQLite > 正文

SQLite教程(二):C/C++接口簡(jiǎn)介

2020-01-25 19:29:23
字體:
供稿:網(wǎng)友
這篇文章主要介紹了SQLite教程(二):C/C++接口簡(jiǎn)介,本文講解了C/C++接口概述、核心對(duì)象和接口、參數(shù)綁定等內(nèi)容,需要的朋友可以參考下
 

一、概述:

    在SQLite提供的C/C++接口中,其中5個(gè)APIs屬于核心接口。在這篇博客中我們將主要介紹它們的用法,以及它們所涉及到的核心SQLite對(duì)象,如database_connection和prepared_statement。相比于其它數(shù)據(jù)庫引擎提供的APIs,如OCI、MySQL API等,SQLite提供的接口還是非常易于理解和掌握的。
    
二、核心對(duì)象和接口:

    1. 核心對(duì)象:
    在SQLite中最主要的兩個(gè)對(duì)象是,database_connection和prepared_statement。database_connection對(duì)象是由sqlite3_open()接口函數(shù)創(chuàng)建并返回的,在應(yīng)用程序使用任何其他SQLite接口函數(shù)之前,必須先調(diào)用該函數(shù)以便獲得database_connnection對(duì)象,在隨后的其他APIs調(diào)用中,都需要該對(duì)象作為輸入?yún)?shù)以完成相應(yīng)的工作。至于prepare_statement,我們可以簡(jiǎn)單的將它視為編譯后的SQL語句,因此,所有和SQL語句執(zhí)行相關(guān)的函數(shù)也都需要該對(duì)象作為輸入?yún)?shù)以完成指定的SQL操作。
    
    2. 核心接口:
    1). sqlite3_open
    上面已經(jīng)提到過這個(gè)函數(shù)了,它是操作SQLite數(shù)據(jù)庫的入口函數(shù)。該函數(shù)返回的database_connection對(duì)象是很多其他SQLite APIs的句柄參數(shù)。注意,我們通過該函數(shù)既可以打開已經(jīng)存在的數(shù)據(jù)庫文件,也可以創(chuàng)建新的數(shù)據(jù)庫文件。對(duì)于該函數(shù)返回的database_connection對(duì)象,我們可以在多個(gè)線程之間共享該對(duì)象的指針,以便完成和數(shù)據(jù)庫相關(guān)的任意操作。然而在多線程情況下,我們更為推薦的使用方式是,為每個(gè)線程創(chuàng)建獨(dú)立的database_connection對(duì)象。對(duì)于該函數(shù)還有一點(diǎn)也需要額外說明,我們沒有必要為了訪問多個(gè)數(shù)據(jù)庫而創(chuàng)建多個(gè)數(shù)據(jù)庫連接對(duì)象,因?yàn)橥ㄟ^SQLite自帶的ATTACH命令可以在一個(gè)連接中方便的訪問多個(gè)數(shù)據(jù)庫。
        
    2). sqlite3_prepare
    該函數(shù)將SQL文本轉(zhuǎn)換為prepared_statement對(duì)象,并在函數(shù)執(zhí)行后返回該對(duì)象的指針。事實(shí)上,該函數(shù)并不會(huì)評(píng)估參數(shù)指定SQL語句,它僅僅是將SQL文本初始化為待執(zhí)行的狀態(tài)。最后需要指出的,對(duì)于新的應(yīng)用程序我們可以使用sqlite3_prepare_v2接口函數(shù)來替代該函數(shù)以完成相同的工作。
    
    3). sqlite3_step
    該函數(shù)用于評(píng)估sqlite3_prepare函數(shù)返回的prepared_statement對(duì)象,在執(zhí)行完該函數(shù)之后,prepared_statement對(duì)象的內(nèi)部指針將指向其返回的結(jié)果集的第一行。如果打算進(jìn)一步迭代其后的數(shù)據(jù)行,就需要不斷的調(diào)用該函數(shù),直到所有的數(shù)據(jù)行都遍歷完畢。然而對(duì)于INSERT、UPDATE和DELETE等DML語句,該函數(shù)執(zhí)行一次即可完成。
    
    4). sqlite3_column
    該函數(shù)用于獲取當(dāng)前行指定列的數(shù)據(jù),然而嚴(yán)格意義上講,此函數(shù)在SQLite的接口函數(shù)中并不存在,而是由一組相關(guān)的接口函數(shù)來完成該功能,其中每個(gè)函數(shù)都返回不同類型的數(shù)據(jù),如:
 

復(fù)制代碼代碼如下:

    sqlite3_column_blob
    sqlite3_column_bytes
    sqlite3_column_bytes16
    sqlite3_column_double
    sqlite3_column_int
    sqlite3_column_int64
    sqlite3_column_text
    sqlite3_column_text16
    sqlite3_column_type
    sqlite3_column_value
    sqlite3_column_count
 

    其中sqlite3_column_count函數(shù)用于獲取當(dāng)前結(jié)果集中的字段數(shù)據(jù)。下面是使用sqlite3_step和sqlite3_column函數(shù)迭代結(jié)果集中每行數(shù)據(jù)的偽代碼,注意這里作為示例代碼簡(jiǎn)化了對(duì)字段類型的判斷:
復(fù)制代碼代碼如下:

     int fieldCount = sqlite3_column_count(...);
     while (sqlite3_step(...) <> EOF) {
         for (int i = 0; i < fieldCount; ++i) {
             int v = sqlite3_column_int(...,i);
         }
     }

    5). sqlite3_finalize
    該函數(shù)用于銷毀prepared statement對(duì)象,否則將會(huì)造成內(nèi)存泄露。
    
    6). sqlite3_close
    該函數(shù)用于關(guān)閉之前打開的database_connection對(duì)象,其中所有和該對(duì)象相關(guān)的prepared_statements對(duì)象都必須在此之前先被銷毀。

 

三、參數(shù)綁定:

    和大多數(shù)關(guān)系型數(shù)據(jù)庫一樣,SQLite的SQL文本也支持變量綁定,以便減少SQL語句被動(dòng)態(tài)解析的次數(shù),從而提高數(shù)據(jù)查詢和數(shù)據(jù)操作的效率。要完成該操作,我們需要使用SQLite提供的另外兩個(gè)接口APIs,sqlite3_reset和sqlite3_bind。見如下示例:

 

復(fù)制代碼代碼如下:

void test_parameter_binding() {
        //1. 不帶參數(shù)綁定的情況下插入多條數(shù)據(jù)。
        char strSQL[128];
        for (int i = 0; i < MAX_ROWS; ++i) {
            sprintf(strSQL,"insert into testtable values(%d)",i);
            sqlite3_prepare_v2(..., strSQL);
            sqlite3_step(prepared_stmt);
            sqlite3_finalize(prepared_stmt);
        }
        //2. 參數(shù)綁定的情況下插入多條數(shù)據(jù)。
        string strSQLWithParameter = "insert into testtable values(?)";
        sqlite3_prepare_v2(..., strSQL);
        for (int i = 0; i < MAX_ROWS; ++i) {
            sqlite3_bind(...,i);
            sqlite3_step(prepared_stmt);
            sqlite3_reset(prepared_stmt);
        }
        sqlite3_finalize(prepared_stmt);
    }

 

這里首先需要說明的是,SQL語句"insert into testtable values(?)"中的問號(hào)(?)表示參數(shù)變量的占位符,該規(guī)則在很多關(guān)系型數(shù)據(jù)庫中都是一致的,因此這對(duì)于數(shù)據(jù)庫移植操作還是比較方便的。

    通過上面的示例代碼可以顯而易見的看出,參數(shù)綁定寫法的執(zhí)行效率要高于每次生成不同的SQL語句的寫法,即2)在效率上要明顯優(yōu)于1),下面是針對(duì)這兩種寫法的具體比較:

    1). 單單從程序表面來看,前者在for循環(huán)中執(zhí)行了更多的任務(wù),比如字符串的填充、SQL語句的prepare,以及prepared_statement對(duì)象的釋放。
    2). 在SQLite的官方文檔中明確的指出,sqlite3_prepare_v2的執(zhí)行效率往往要低于sqlite3_step的效率。
    3). 當(dāng)插入的數(shù)據(jù)量較大時(shí),后者帶來的效率提升還是相當(dāng)可觀的。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日韩免费在线看| 99视频精品全部免费看| 欧美性生活大片免费观看网址| 久久亚洲二区| 精品人妻在线播放| 人妻丰满熟妇aⅴ无码| 久在线观看视频| 久久视频在线观看中文字幕| 日韩美女在线播放| zzjj国产精品一区二区| 精品国产三级电影在线观看| 欧美日韩免费区域视频在线观看| 久久精品一区四区| 蜜臀av一区二区在线免费观看| 欧美成人一区二区视频| 久久久久久久九九九九| 在线观看日本中文字幕| 丰满饥渴老女人hd| 天堂一区在线观看| 一本久道综合色婷婷五月| 最近中文字幕免费mv| 久久久久久99| 国产精品一码二码三码在线| 国产精品入口福利| 欧美亚洲另类在线| 久久中文字幕在线视频| 亚洲社区在线观看| 亚洲精品videossex少妇| 欧美日韩和欧美的一区二区| 日韩欧美精品网址| 亚洲va天堂va国产va久| 亚洲综合999| 亚洲精品免费在线| 97精品国产露脸对白| 国产成人自拍高清视频在线免费播放| 性感美女一级片| 无码精品人妻一区二区| www视频在线| 日本免费网站在线观看| 日本成人动漫在线观看| 内射无码专区久久亚洲| 蜜桃91麻豆精品一二三区| 蜜臀av在线观看| 日本欧美一区二区在线观看| 美国一区二区三区在线播放| 奇米在线7777在线精品| 久久中文字幕一区二区三区| 久久精品一区二区三区中文字幕| 色综合久久久久久| 蜜臀久久99精品久久久久久9 | 欧美另类高清zo欧美| 欧美日韩国产一级片| 欧美精品v日韩精品v韩国精品v| 宅男噜噜噜66一区二区66| 亚洲爱爱爱爱爱| 中文字幕欧美视频在线| 欧美日本亚洲视频| 国产精品免费观看在线| 99久久久久国产精品免费| 欧美日韩一区二区三区免费| mm131午夜| 国产区二区三区| 99久久人妻精品免费二区| 性生交大片免费全黄| 天堂а√在线中文在线新版 | 日韩精品在线视频美女| 在线激情影院一区| 欧美资源在线观看| 美日韩免费视频| 欧美一级欧美一级| 91成人在线观看喷潮蘑菇| 美女av免费看| 一级全黄裸体免费视频| 毛片av中文字幕一区二区| 97久久精品人人做人人爽| 亚洲精品高清视频在线观看| 欧美一区午夜视频在线观看| 久精品免费视频| 91亚洲精华国产精华| 在线码字幕一区| 国内国产精品天干天干| 久久午夜精品视频| 一区二区精品视频在线观看| 国产一区福利在线| 亚洲一区二区视频在线观看| 亚洲第一页在线| 欧美一级片久久久久久久| 欧美在线激情| 日本高清免费在线视频| 日韩黄色a级片| 日本不卡视频在线| 一区二区在线观看免费| 日韩av中文字幕在线播放| 国产精品国产三级国产aⅴ9色| 日本在线播放一区| 天天干天天玩天天操| 精品99在线观看| 免费高清不卡av| 一区av在线播放| 色青青草原桃花久久综合| 91久久在线播放| 久久久久狠狠高潮亚洲精品| 少妇影院在线观看| 精品综合免费视频观看| 福利精品视频在线| 久久久久久久国产精品| 中文字幕在线乱| 91麻豆精品久久毛片一级| 日本伊人精品一区二区三区观看方式| 一区二区三区视频在线看| 中文字幕精品—区二区| 鲁鲁狠狠狠7777一区二区| 女人扒开腿免费视频app| 中文在线观看免费高清| 中文字幕免费在线观看视频一区| 亚洲成人xxx| 精品91免费| 私密视频在线观看| 久久精品亚洲| 欧美午夜精品久久久久久浪潮| 欧美日本中文字幕| 成人在线国产视频| 日韩成人在线免费视频| 久久久久久久国产精品影院| 亚洲男女性事视频| 日韩免费av一区二区三区| 91激情视频在线观看| 日本va欧美va精品| 欧美一区二区三区视频在线| 91九色露脸| 先锋资源av在线| 日韩激情在线观看| 日韩一区二区不卡| 久久婷婷开心| 永久av免费网站| 91在线一区二区| 色琪琪综合男人的天堂aⅴ视频| 伊人情人网综合| 欧美人妻一区二区| 91在线国产福利| 亚洲午夜色婷婷在线| 一区二区三区视频在线播放| 欧美国产精品一二三| 国产午夜亚洲精品不卡| 久久久久久久香蕉网| mm1313亚洲国产精品无码试看| 91精品视频免费在线观看| 性久久久久久久久久久久| 国产欧美欧洲在线观看| 亚洲国产第一区| 国产精品1024| 色黄久久久久久| 无码日韩人妻精品久久蜜桃| 亚洲爆乳无码一区二区三区| 在线电影一区二区三区| 欧美日韩在线精品| 日韩免费在线视频观看| 亚洲国产精品一区二区久久| 国产精品综合不卡av| 91精彩刺激对白露脸偷拍| caoporen国产精品视频| 欧美激情乱人伦一区| 污污视频网站在线| 韩国欧美国产一区| 俺去啦;欧美日韩| 天天操狠狠操夜夜操| 精品一区二区三区影院在线午夜| 中文字幕亚洲精品| 中文久久久久久| 激情五月播播久久久精品| 久久精品国产电影| 欧美激情第四页| 成人深夜在线观看| 欧美最猛性xxxx| 无码人中文字幕| 亚洲一线二线三线视频| 精品一区二区三区国产| 天天爽夜夜爽人人爽| 欧美日韩一区视频| 国产香蕉一区二区三区| 日本国产在线观看| 久久夜精品va视频免费观看| 中文字幕三级电影| 亚洲欧洲制服丝袜| 天天综合色天天综合色hd| 亚洲AV午夜精品| xvideos亚洲人网站| 国产成人无码一区二区在线观看| 国产精品久久久久久亚洲伦| 国产在线欧美日韩| 国产999久久久| 色狠狠久久aa北条麻妃 | 91.麻豆视频| 97视频在线免费| 麻豆国产精品一区二区三区| 午夜精品在线视频| 日本老熟俱乐部h0930| 色美美综合视频| 久草免费福利在线| 国产一本一道久久香蕉| 国产精欧美一区二区三区| 国产小视频在线观看免费| 欧美日韩午夜影院| 天天爽天天爽夜夜爽| www日韩大片| 国内一区在线| 懂色av一区二区三区四区| 久热爱精品视频线路一| 免费一级suv好看的国产网站| 色综合久久综合网97色综合| 国产 日韩 欧美在线| 国产精品资源在线| 亚洲va欧美va国产综合久久| 国产色在线视频| 色综合天天狠天天透天天伊人| 国产精品久久久免费看| 91精品国产综合久久久蜜臀图片| 91在线第一页| 欧美日韩亚洲天堂| 中文字幕无码不卡免费视频| 国产女人水真多18毛片18精品视频| 欧美日韩国产精品一区二区| 久久国产精品99久久久久久老狼 | 91视频一区二区三区| 国产一区二区免费电影| 久久综合影视| 成人黄色在线免费| 精品人妻av一区二区三区| 97视频在线观看视频免费视频 | 欧美国产日韩a欧美在线观看| 欧洲高清一区二区| 九九视频精品免费| 激情久久av| 久久国产人妖系列| 国产精品福利视频| 日本午夜一本久久久综合| 国产精品私拍pans大尺度在线| 国产精品久久综合青草亚洲AV| 久久久影视精品| 136福利视频导航| 午夜免费在线观看精品视频| 最近中文字幕在线观看| 久久人人97超碰精品888| 中文字幕在线播| 91成人天堂久久成人| 91丨porny丨在线中文| 国产91|九色| 老司机午夜福利视频| 亚洲影院污污.| 久久99精品久久久| 亚洲人一区二区| 国产精品色呦呦| 韩国视频一区二区三区| 在线免费不卡视频| 亚洲熟妇无码av| 亚洲系列中文字幕| 中文字幕在线观看第二页| 琪琪第一精品导航| 日韩高清欧美激情| 神马影院我不卡| 中文字幕亚洲一区二区av在线| 乱妇乱女熟妇熟女网站| 欧美日韩国产在线| 在线观看日本中文字幕| 中国日韩欧美久久久久久久久| 日日夜夜狠狠操| 国产美女精品视频免费观看| 麻豆国产精品官网| 男女日批视频在线观看| 一本色道久久综合亚洲精品按摩| 特大黑人巨人吊xxxx| 正在播放亚洲1区| 一卡二卡三卡在线观看| 97se国产在线视频| 国产色综合一区| 国产欧美精品一二三| 日韩电影中文字幕| 中文字幕激情视频| 国产精品一区二区欧美黑人喷潮水| 97久久精品人人爽人人爽蜜臀| 亚洲黄色av网址| 亚洲精品xxxx| 中文在线免费看视频| 精品在线视频一区二区三区| 亚洲欧美综合网| 中文字幕第4页| 欧美亚洲一区在线| 成人妖精视频yjsp地址| 波多野结衣天堂| 亚洲国产天堂久久综合网| 中文字幕日韩第一页| 精品国产乱码久久久久久郑州公司 | 99视频有精品| 中文av字幕在线观看| 日韩va亚洲va欧洲va国产| 国产精品久久久久精| 日韩妆和欧美的一区二区| 一区二区三区不卡在线观看| 免费看污片网站| 97婷婷涩涩精品一区| 国产精品77777竹菊影视小说| 99视频免费播放| 一区二区福利视频| 三级影片在线观看欧美日韩一区二区| 一级黄色片播放| 日韩欧美黄色影院| 性网爆门事件集合av| 国产美女作爱全过程免费视频| 这里只有精品免费| 成人免费视频国产| 日本精品一区在线观看| 亚洲人成电影在线播放| 美腿丝袜亚洲色图| 九九九久久久久久久| 91精品国产高清久久久久久91| 久久天天做天天爱综合色| 性欧美丰满熟妇xxxx性仙踪林| 国产精品99久久久久久白浆小说 | 亚洲自拍偷拍麻豆| 免费无遮挡无码永久在线观看视频| 91中文精品字幕在线视频| 亚洲国产你懂的| 成人黄色激情视频| 国产欧美123| 国产一区二区免费| 国产91在线看| 亚洲永久精品ww.7491进入| 国产精品丝袜视频| 姬川优奈aav一区二区| 一级黄色短视频| 欧美韩国日本在线| 久久免费视频在线| 1区2区3区国产精品| 国产在线视频卡一卡二| 少妇熟女一区二区| 亚洲夜晚福利在线观看| 不卡的av电影| 精品在线视频观看| 51xx午夜影福利| 欧美成人h版在线观看| 国产精品毛片大码女人| av黄色在线看| 国产无限制自拍| 欧美成人亚洲成人| 亚洲天堂av一区| 91丨porny丨在线中文 | 成人在线观看小视频| 蜜桃成人在线| 日韩av中文在线| 久久久午夜精品| 少妇太紧太爽又黄又硬又爽| 欧美日韩精品在线一区二区 | 成人欧美一区二区三区在线观看| 欧美丝袜第三区| 免费久久99精品国产| 少妇精品无码一区二区免费视频| 欧美久久在线| 亚洲精品一区在线观看香蕉| 91丨九色丨黑人外教| 天天干天天操天天爱| 91视频这里只有精品| 亚洲一区免费网站| 亚洲国产成人91精品| 欧美国产一区在线| 超碰在线人人干| 91精品小视频| 亚洲最大免费| 午夜精品一区二区三区在线视 | 亚洲成a人无码| 免费毛片一区二区三区久久久| 精品视频在线播放免| 国产精品国产自产拍高清av王其 | 日本精品福利视频| 欧洲中文字幕国产精品| 欧美日韩一区二区三区在线| 国产成人aaa| 懂色av蜜臀av粉嫩av喷吹| 在线成人免费av| 日韩videos| 2024亚洲男人天堂| 日韩午夜精品电影| 欧美国产欧美综合| 丝袜诱惑亚洲看片| 日韩女优在线观看| 香蕉视频免费网站| av动漫免费观看| 国产精品入口尤物| 亚洲视频axxx| 色综合天天性综合| 国产日产欧美一区二区三区| 男人天堂av网| 校园春色 亚洲| 999久久久精品视频| 日韩精彩视频| 国产精品观看在线亚洲人成网| 日韩精品在线免费观看| 亚洲国产aⅴ天堂久久| www.久久久久久久久| 日日躁夜夜躁白天躁晚上躁91| 免费在线观看日韩| 无码人妻aⅴ一区二区三区玉蒲团| 中文字幕一区二区三区四区五区 | 日本人妻丰满熟妇久久久久久| www.av视频| 久久国产精品无码一级毛片| 精品少妇人欧美激情在线观看| 久久国产主播精品| 国产精品久久久久福利| 播播国产欧美激情| 日韩精品一区二区三区视频播放 |