基本介紹
- 中文名:嵌入式資料庫語言
- 外文名:Embedded database language
- 使用語言:C語言、JAVA
- 使用工具:SQL
- 特性:具有定時限制的特性
- 領域:計算機
嵌入式資料庫介紹
SQL ite嵌入式資料庫
SQL ite是 D. R ichard Hipp開發的開源性嵌入式資料庫引擎 ,全部原始碼在 3萬行左右,編譯後的程式大小在 250kb,甚至可縮小至 125kb左右,最多可以管理 2TB的數據,支持 SQL 語句,是個極端輕量級的關係資料庫,提供 B - tree存儲數據的模式,以Base 64機制將二進制數據轉換成ASCII編碼形成存儲,無數據類型,卻保留了資料庫的大部分特徵,提供了對 SQL92 標準的大多數支持,支持多表、索引、事務、視圖、觸發和一系列的用戶接口及驅動。
SQL ite由於小、快、簡單、可靠、安全、穩定,性價比極高,深受歡迎。SQL ite有一種優雅、標準化的層次結構設計。頂層接口層 ( Interface)是一個 C語言庫,即使使用的是不同語言的 API,在底層執行的都是 C語言庫。
SQL ite庫的公用接口函式是在 main. c,legacy. c 和vdbeap i. c原始碼檔案中實現的,SQL ite庫中所有的外部符號都以 sqlite3為前綴,以 sqlite3 開始的符號形成了 SQL ite的 API。接著是標記處理器 ( Tokenize) 、分析器 ( Parser)和代碼生成器 (Code generator) 。 從接口接收到命令後,傳到標記處理器,從命令字元串中解析 SQL 語句,再送給代碼分析器,代碼生成器將代碼分析器成果生成完整 SQL 語句送入虛擬機 (V irtual Machine)
執行 SQL語句。
在下部是基於 Knkuth經過最佳化的 B 樹,運行在可調整的頁面緩衝 ( Pager Cache)上,有助於將對磁碟的查找減到最小,B 樹的請求得到快速、安全、有效的處理。 作業系統接口 (OS Interface)提供一個抽象的作業系統接口層,保證其不同系統之間的兼容性。
使用C語套用SQL ite
Sqlite3 3 db = sqlite3 open ( " mydb " , 0777,&errm sg) ; ∥打開資料庫檔案ret = sqlite3 exec ( db, qry, null, null,&errm sg) ; ∥SQL語句的執行程式Sqlite3 close ( db) ; ∥關閉資料庫
arm - 1 inux - gee - I/ root/ sqlite - L / root/ sqlite—o mydb mydb. c - lsqlite3
此外,如果想取回 SQL 語句訪問資料庫的結果,就要對每一個記錄執行回調函式 call - back ( ) 。
使用JAVA套用SQL ite
第三方接口庫中的 Java代碼包含 JN I接口和多個版本的 JDBC接口程式。可根據 JRE的版本選擇相應的 JDBC程式。Java類包加上 Sqlite jni. dll檔案,組成了 SQL ite的 Java接口庫,在套用 Java語言調用 JDBC或 JN I接口時,都是通過套用 Java的本地化技術調用 Sqlite jni. dll檔案,完成對 SQL ite資料庫的操作。
用戶一定要保證在類路徑 class path 中 有“sqlite. jar”,並且保證在你的 JAVA 庫路徑 JAVA li2 brary path中有本地庫 native library。用 " SQL ite. JD2BCD river"作為 JDBC的驅動程式類名。連線 JDBC的 URL格式為:jdbc: sqlite: /path。
下面給出套用 JDBC連線 SQL ite關鍵代碼:
Class clz = Class. forName ( " SQL ite. JDBCD riv2er" ) ; ∥申明 DBC驅動程式Connection conn = D riverManager. getConnection( " jdbc: sqlite: /host/mydb. db" ) ; ∥連線庫Statement stm t = conn. createStatement( ) ; /stm t. execute ( " create table tb ( name varchar(1OO) , age int) " ) ; /生成 tb表stm t. execute ( " insert into person values(‘aaa’ ’ ,21) " ) ; ∥插入數據result = stm t. executeQuery ( " select from per2son" ) ; ∥用 SQL語句讀出數據while ( resuh. next( ) ) {System. out. p rintln ( resuh. getString(1) ) ;System. out. p rintln ( resuh. getlnt(2) ) ;}