嵌入式資料庫語言

嵌入式系統早期涉及到的數據量很少,用簡單的文本式數據管理模式足以適應它的需要。隨著套用領域的不斷擴展,面臨需要處理的數據量也在不斷增加,文本式的數據管理模式漸漸呈現出局限性,成了系統研發的瓶頸。嵌入式系統迫切需要資料庫技術支持。資料庫嵌入到了應用程式進程中,嵌入式運行模式允許嵌入式資料庫通過 SQL 來輕鬆管理應用程式數據,而不依靠原始的文本檔案。嵌入式資料庫還提供零配置運行模式,這樣可以啟用其中一個並運行一個快照。嵌入式資料庫SQL使用十分廣泛,這裡介紹如何使用C語言和JAVA來套用SQL。

基本介紹

  • 中文名:嵌入式資料庫語言
  • 外文名:Embedded database language
  • 使用語言:C語言、JAVA
  • 使用工具:SQL
  • 特性:具有定時限制的特性
  • 領域:計算機
嵌入式資料庫介紹,SQL ite嵌入式資料庫,使用C語套用SQL ite,使用JAVA套用SQL ite,

嵌入式資料庫介紹

嵌入式系統在國內的研發也是近年來才起步的然而發展極為迅速。 嵌入式系統早期涉及到的數據量很少,用簡單的文本式數據管理模式足以適應它的需要,採用檔案作為數據存取的邏輯載體。檔案作為數據存儲載體主要有以下的缺點:一是增加了套用開發的難度與代價,所有的套用都獨立重複對數據的管理;二是數據共享性差,而數據互動在網路時代是必需的;三是獨立性、語義性、移植性差,造成了軟體的可重用性差,系統成本高。隨著套用領域的不斷擴展,面臨需要處理的數據量也在不斷增加,文本式的數據管理模式漸漸呈現出局限性,成為了系統研發的瓶頸。 對數據的整合管理需求上升到資料庫層面,嵌入式系統迫切需要資料庫技術支持。
嵌入式資料庫無須獨立運行的資料庫引擎,它是由程式直接調用相應的API去實現對數據的存取操作。更直白的講,嵌入式資料庫是一種具備了基本資料庫特性的數據檔案,嵌入式資料庫與其它資料庫產品的區別是,前者是程式驅動式,而後者是引擎回響式。嵌入式資料庫的一個很重要的特點是它們的體積非常小,編譯後的產品也不過幾十K。這不但對桌面程式的數據存儲方案是一個很好的選擇,也使得它們可以套用到一些移動設備上。同時,很多嵌入式資料庫在性能上也優於其它資料庫,所以在高性能的套用上也常見嵌入式資料庫的身影。

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

C語言利用 SQL ite提供的 API函式來完成與資料庫的互動
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
其 中,- I/ root/ sqlite 指明包含的頭檔案“sqlite3. h”所在的位置;- L / root/ sqlite指明編譯要連結的庫檔案所在的位置;- lsqlite3指明編譯要連線的庫檔案。
此外,如果想取回 SQL 語句訪問資料庫的結果,就要對每一個記錄執行回調函式 call - back ( ) 。

使用JAVA套用SQL ite

為了套用 Java接口,要採用第三方的接口驅動程式。接口提供了兩種連線 SQL ite的方式 :一是直接用 JN I技術調用 SQL ite的 C語言接口,二是接口程式實現了 Java標準規範的 JDBC接口。
第三方接口庫中的 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) ) ;} 
運行程式時要在 Java. exe命令行加入選項 ja2va. 1 ibrary. path指定到 sqlite jni. dll所在的路徑。JAVA程式又具有簡單易學、面向對象平台無關性、穩定安全等特點。 兩者結合起來開發的應用程式必然兼具兩方面的優勢。

相關詞條

熱門詞條

聯絡我們