校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > SQLite教程(二):C/C++接口簡介

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

熱門標簽:北京智能外呼系統供應商家 奧維地圖標注字體大小修改 中國地圖標注省份用什么符號 電話機器人錄音師薪資 江西穩定外呼系統供應商 智能電銷機器人教育 無錫梁溪公司怎樣申請400電話 高德地圖標注電話怎么沒了 孝感銷售電銷機器人廠家

一、概述:

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

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

復制代碼 代碼如下:

    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函數用于獲取當前結果集中的字段數據。下面是使用sqlite3_step和sqlite3_column函數迭代結果集中每行數據的偽代碼,注意這里作為示例代碼簡化了對字段類型的判斷:
復制代碼 代碼如下:

     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
    該函數用于銷毀prepared statement對象,否則將會造成內存泄露。
   
    6). sqlite3_close
    該函數用于關閉之前打開的database_connection對象,其中所有和該對象相關的prepared_statements對象都必須在此之前先被銷毀。

三、參數綁定:

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

復制代碼 代碼如下:

void test_parameter_binding() {
        //1. 不帶參數綁定的情況下插入多條數據。
        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. 參數綁定的情況下插入多條數據。
        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(?)"中的問號(?)表示參數變量的占位符,該規則在很多關系型數據庫中都是一致的,因此這對于數據庫移植操作還是比較方便的。

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

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

您可能感興趣的文章:
  • c++獲取sqlite3數據庫表中所有字段的方法小結
  • VC++操作SQLite簡單實例
  • 讓Sqlite脫離VC++ Runtime獨立運行的方法
  • C++操作SQLite簡明教程
  • C++ Sqlite3的使用方法

標簽:齊齊哈爾 通化 阜陽 荊州 泰州 海北 臨滄 那曲

巨人網絡通訊聲明:本文標題《SQLite教程(二):C/C++接口簡介》,本文關鍵詞  SQLite,教程,二,C++,接口,簡介,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQLite教程(二):C/C++接口簡介》相關的同類信息!
  • 本頁收集關于SQLite教程(二):C/C++接口簡介的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    理论电影国产精品| 国产精品一区二区免费不卡 | 日韩一区二区三区电影在线观看 | 中文字幕亚洲综合久久菠萝蜜| 91国偷自产一区二区使用方法| 国产成人免费av在线| 高清在线不卡av| 99久久国产综合精品色伊| 99久久婷婷国产精品综合| 91免费版pro下载短视频| 一本大道久久a久久综合| 在线视频你懂得一区| 欧美日韩精品免费观看视频| 色嗨嗨av一区二区三区| 91在线免费播放| 欧美伊人久久大香线蕉综合69| 91精品综合久久久久久| 日韩午夜激情电影| 亚洲黄色免费电影| 国产中文字幕精品| 欧洲在线/亚洲| 久久精品免费在线观看| 亚洲免费观看视频| 亚洲精品欧美激情| 国产精品小仙女| 精品视频一区二区不卡| 久久精品一区二区三区不卡牛牛| 亚洲男女毛片无遮挡| 国产一区二区三区综合| 欧美色综合影院| 亚洲欧美日韩系列| 久久99在线观看| 在线视频一区二区三| 国产欧美视频一区二区| 丝袜亚洲精品中文字幕一区| 色综合色综合色综合色综合色综合 | 婷婷国产v国产偷v亚洲高清| 日本韩国精品在线| 亚洲欧美一区二区在线观看| 国产成人综合自拍| 久久久99精品久久| 国产福利一区二区三区视频| 久久亚洲二区三区| 久久精品国产久精国产爱| 精品视频123区在线观看| 国产精品久久久久7777按摩| zzijzzij亚洲日本少妇熟睡| 久久网这里都是精品| 美女爽到高潮91| 91精品国产91久久综合桃花| 一区二区三区在线免费| 色婷婷久久久综合中文字幕| 亚洲品质自拍视频| 色婷婷精品久久二区二区蜜臀av | 一色桃子久久精品亚洲| 欧美日韩免费高清一区色橹橹| 日韩vs国产vs欧美| 国产欧美日韩另类一区| 成人午夜在线播放| 日日摸夜夜添夜夜添亚洲女人| 久久亚洲欧美国产精品乐播| 91福利在线播放| 蜜臀91精品一区二区三区| 久久久www成人免费毛片麻豆| 国产成人啪免费观看软件| 中文字幕一区二区三区四区| 色婷婷综合久久久中文一区二区| 亚洲一区av在线| 久久久久久麻豆| 日本伦理一区二区| 国产麻豆一精品一av一免费 | 一区二区中文视频| 欧美三级乱人伦电影| 国产精品亚洲成人| 国产精品一区专区| 成人污视频在线观看| 精品一区精品二区高清| 午夜精品久久久久久久久| 国产欧美日韩在线| 久久丝袜美腿综合| 欧美一区二区三区爱爱| 欧美私模裸体表演在线观看| 国产精品一区二区久久精品爱涩| 麻豆成人综合网| 亚洲欧洲成人av每日更新| 欧美激情中文字幕| 亚洲天堂成人网| 亚洲私人影院在线观看| 亚洲精品日日夜夜| 亚洲欧洲成人精品av97| 中文字幕在线一区二区三区| 久久免费精品国产久精品久久久久| 日韩精品专区在线影院观看| 欧美老人xxxx18| 欧美成人精品二区三区99精品| 欧美在线观看一区| 欧美亚洲国产怡红院影院| 91免费视频观看| 欧美日韩一区国产| 久久久噜噜噜久久中文字幕色伊伊| 久久综合成人精品亚洲另类欧美| 久久色.com| 亚洲人成在线播放网站岛国| 亚洲一区二区三区四区在线免费观看| 亚洲国产成人私人影院tom| 国产精品网站在线| 日韩福利视频网| 国产69精品久久久久777| 99re热这里只有精品视频| 日韩一级大片在线| 夜夜嗨av一区二区三区网页| 美女被吸乳得到大胸91| 在线精品视频小说1| 日韩欧美亚洲一区二区| 亚洲精品国产第一综合99久久 | 国精产品一区一区三区mba桃花| 成人激情综合网站| 日韩久久久精品| 亚洲一区二区三区精品在线| 国产成人综合在线观看| 在线不卡中文字幕| 一卡二卡三卡日韩欧美| 成人午夜电影久久影院| 精品国产自在久精品国产| 一区二区三区欧美日| 色综合久久久久久久久| 久久久久久久久久久久久女国产乱| 依依成人精品视频| 成人免费福利片| 国产精品黄色在线观看| 粉嫩aⅴ一区二区三区四区五区| 91精品国产综合久久蜜臀 | 天堂久久一区二区三区| 欧美日韩www| 麻豆成人综合网| 欧美日韩美女一区二区| 一区二区三区精密机械公司| 欧美日韩中字一区| 日韩精品视频网| 欧美电视剧在线看免费| 激情综合五月天| 国产精品三级av在线播放| 不卡一区二区中文字幕| 国产女人18水真多18精品一级做| 国产资源在线一区| 亚洲欧洲制服丝袜| 欧美在线观看一区| 日日夜夜精品视频免费| 久久精品人人做| 欧美日韩中字一区| 国产一区二区三区四区在线观看| 欧美激情综合网| 色综合久久综合中文综合网| 亚洲一级不卡视频| 久久嫩草精品久久久久| 91国产免费看| 久久国产精品一区二区| 欧美激情综合在线| 91精品国产综合久久久久| 国内精品自线一区二区三区视频| 亚洲精品午夜久久久| 精品国产伦一区二区三区观看体验 | 色哟哟亚洲精品| 精品在线播放午夜| 亚洲欧美日韩小说| 欧美一区二区在线看| 丁香六月久久综合狠狠色| 久久精品一区二区三区av| 日本道在线观看一区二区| 成人免费看视频| 国产成人在线视频网站| 国产尤物一区二区在线| 日韩精品电影一区亚洲| 亚洲高清视频在线| 亚洲国产婷婷综合在线精品| 亚洲欧美韩国综合色| 一区二区三区四区乱视频| 国产精品久久久久久久久免费相片| 亚洲精品一区二区三区精华液 | 国产精品久久免费看| 久久久午夜精品理论片中文字幕| 日韩一级片网站| 久久免费视频色| 亚洲桃色在线一区| 亚洲精品国产精华液| 性做久久久久久久久| 蜜桃视频第一区免费观看| 美国毛片一区二区三区| 国产经典欧美精品| 色噜噜夜夜夜综合网| 欧美猛男男办公室激情| 久久久av毛片精品| 亚洲天堂久久久久久久| 天涯成人国产亚洲精品一区av| 全国精品久久少妇| 成人午夜短视频| 欧美一区二区三区色| 日本一区二区三级电影在线观看| 亚洲天堂中文字幕| 久久国产精品一区二区|