輕量級開源嵌入式關聯式資料庫sqlite基本使用

來源:互聯網
上載者:User

標籤:des   style   blog   color   使用   os   io   檔案   

<一,>1,安裝 for centos/ReaHat;

yum -y install sqlite sqlite-devel;

2,sqlite C/C++API介面,核心對象

OCI介面(Oracle Call Interface)
2_1,核心對象:database_connection和prepared_statement;

database_connection對象是由sqlite3_open()介面函數建立並返回的,在應用程式使用任何其他SQLite介面函數前,必須先調用該函數以便獲得database_connection對象,後面的其他APIs調用中,都需要database_connection對象作為輸入參數以完成相應的工作,prepared_statement,可將其視為編譯好的SQL語句,所有SQL語句執行相關的函數都需要改對象作為輸入參數以完成指定的SQL操作.

2_2,核心介面01)

sqlite3_open 操作SQLite資料庫的入口函數,該函數返回的database_connection對象是很多其他SQLite APIs的控制代碼參數,我們可以通過該函數即可以開啟已經存在 的資料庫檔案,也可以建立新的資料庫檔案,該函數返回的database_connection對象,我們可以在多個線程之間共用該對象的指標,以便完成和資料庫相關的任意操作,為訪問多個資料庫而建立多個資料庫連接對象,因為通過SQLite內建的ATTACH命令可以在一個串連中方便的訪問多個資料庫;

2),sqlite3_prepar

該函數將SQL文本轉換為prepared_statement對象,斌在函數執行後返回該對象指標,該函數不會評估參數指定SQL語句,它僅僅是將SQL文本初始化為待執行的狀態,sqlite3_prepare_v2等同;

3),sqlite_step

函數用於評估sqlite3_prepare函數返回的prepared_statement對象,在執行完該函數之後,prepared_statement對象的內部指標將指向其返回的結果集的第一行;迭代其後的資料行,則需要不斷的調用該函數,直到遍曆完資料行,對於insert,update和delete等DML語句,sqlite_step一次即可完成;

4),sqlite3_column _....

函數用於擷取當前行指定列的資料,

sqlite3_column_blob,bytes,bytes16,double,int,int64,text,text16,type,value,count;

其中sqlite3_column_count函數用於擷取當前結果集中的欄位資料

案例偽碼,

使用sqlite3_step和sqlite_column函數迭代結果集中每行資料

int fieldCount = sqlite3_column_count();

while (sqlite3_step()<>EOF)

{

for (int i = 0;i < fieldCount;i++)

{

int v = sqlite3_column_int();

}

}

5),sqlite3_finalize

函數用於銷毀prepared_statement對象,否則會造成記憶體泄露

6),sqlite3_close

函數用於關閉之前開啟的database_connection對象,其中所有和該對象相關的prepared_statement對象都必須在此之前銷毀;

3,參數變數綁定;

SQLite的SQL文本也支援變數綁定,以減少SQL語句被動態解析的次數,有利於提高資料查詢和操作效率,要完成該操作,還需要SQLite提供的另外2個介面,sqlite3_reset和sqlite3_bind;

 1 void test_parameter_binding() { 2 //1. 不帶參數綁定的情況下插入多條資料, 3 char strSQL[128]; 4 for (int i = 0;i < MAX_ROWS;++i) 5 { 6 sprintf(strSQL,"insert into testtable values(%d)",i); 7 sqlite3_prepare_v2(...,strSQL); 8 sqlite3_step(prepared_statement); 9 sqlite3_finalize(prepared_statement);10 }11 //2,參數綁定情況下插入多條資料12 string strSQLWithParameter = "insert into testtable values(?)";13 sqlite3_prepare_v2(...,strSQL);14 for (int i = 0;i < MAX_ROWS;++i)15 {16 sqlite3_bind();17 sqlite3_step();18 sqlite3_reset();19 }20 sqlite3_finalize();21 22 }

<二,>資料庫,表CLI語句;

在指定資料庫建立表;

用attach database ‘資料庫檔案路徑,可以存在或是建立‘ as 資料庫名,同前面的資料庫檔案名一樣;

在在其建立表時,仍然需要指定此資料庫的名稱,不然SQL建立的資料表將會被建立到我們sqlite3 資料庫名稱的資料庫中;

簡單Database Backup恢複

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.