Android 小項目之--SQLite 使用法門

每一個應用程序都要使用數據,Android應用程序也不例外,Android使用開源的、與操做系統無關的SQL數據庫 --大名鼎鼎的SQLite。SQLite是一款輕量級數據庫,它的設計目的是嵌入式,並且它佔用的資源很是少,在嵌入式設備中,可能只須要幾百KB,這也是 Android 系統採用 SQLite 數據庫的緣由之一吧。html

簡介sql

  • 輕量級
    使用 SQLite 只須要帶一個動態庫,就能夠享受它的所有功能,並且那個動態庫的尺寸想當小。
  • 獨立性
    SQLite 數據庫的核心引擎不須要依賴第三方軟件,也不須要所謂的「安裝」。
  • 隔離性
    SQLite 數據庫中全部的信息(好比表、視圖、觸發器等)都包含在一個文件夾內,方便管理和維護。
  • 跨平臺
    SQLite 目前支持大部分操做系統,不至電腦操做系統更在衆多的手機系統也是可以運行,好比:Android。
  • 多語言接口
    SQLite 數據庫支持多語言編程接口。
  • 安全性

  • SQLite 數據庫經過數據庫級上的獨佔性和共享鎖來實現獨立事務處理。這意味着多個進程能夠在同一時間從同一數據庫讀取數據,但只能有一個能夠寫入數據。
  • Sqlite數據庫管理工具    
        在學習一種新技術以前,首先要作的是在本身的計算機上安裝能夠操做這種技術的工具。固然,這也很是符合一句成語:功欲善其事,必先利其器。雖然使用好的工具並不能使本身更好地掌握這種技術,但卻能使咱們的工做效率大大提高。
    言歸正傳,如今先看看官方爲咱們提供了什麼工具來操做Sqlite數據庫。進入官方的下載頁面,網址以下:
    http://www.sqlite.org/download.html
        在下載頁面中找到Windows版的二進制下載包。在做者寫做本書時,Sqlite的最新版本是Sqlite3.6.2。所以,要下載的文件是Sqlite-3_6_20.zip。將這個zip文件解壓,發如今解壓目錄中只有1個文件:sqlite3.exe。對,這個文件就是操做Sqlite數據庫的工具(是否是很輕量?連工具都只有一個)。它是一個命令行程序,運行這個程序,進入操做界面,如圖6.15所示。
      

        在控制檯中能夠輸入SQL語句或控制檯命令。全部的SQL語句後面必須以分號(;)結尾。控制檯命令必須以實心點(.)開頭,例如,.help(顯示幫助信息);.quit(退出控制檯);.tables(顯示當前數據庫中全部表名)。
    雖然能夠在Sqlite的控制檯中輸入SQL語句來操做數據庫,但輸入大量的命令會使工做量大大增長。所以,咱們必需要使用所謂的「利器」來取代這個控制檯程序。
    因爲Sqlite提供了各類類型的程序接口,所以,能夠管理Sqlite數據庫的工具很是多,下面是幾個比較經常使用的Sqlite管理工具。
    SQLite Database Browser
    http://sourceforge.net/projects/sqlitebrowser
    SQLite Expert Professional
    http://www.sqliteexpert.com
    Sqlite Developer
    http://www.sqlitedeveloper.com
    sqliteSpy
    http://www.softpedia.com/progDownload/SQLiteSpy-Download-107386.html

    推薦一個FireFox 插件--SQLite Manager

    l,這也是做者推薦使用的Sqlite管理工具。
  • 官方地址:http://code.google.com/p/sqlite-manager/
  • 在firefox裏:

  • 該工具擁有大量的可視化功能,例如,創建數據庫、創建表、SQL Builder等工具。圖6.16是SQLite ExpertProfessional的主界面。

     建立數據庫和表     使用SQLite控制檯工具(sqlite3.exe)創建數據庫很是簡單,只須要輸入以下的命令就能夠創建或打開數據庫。 sqlite3.exe test.db     若是數據庫(test.db)存在,則打開該數據庫,若是數據庫不存在,則預創建test.db文件(這時並不生成test.db文件,直到在Sqlite控制檯中執行與數據庫組件(表、視圖、觸發器等)相關的命令或SQL語句才建立test.db文件。 若是想使用sqlite.exe命令同時創建數據庫和表,能夠先創建一個sql.script文件(也能夠是其餘文件名),並在其中輸入以下的SQL語句: create table table1 ( id integerprimary key, age int, name text  ); create table table2( idinteger primary key, type_idinteger, name text );     而後執行以下的命令,就會在創建test.db文件的同時,在該test.db文件中創建table1和table2兩個表。 sqlite3.exe test.db < sql.script 在使用createtable語句建立表時還能夠爲每個字段指定默認值,以下面的SQL語句所示: create table table1 ( id integerprimary key, age int default 20, name text  ); create table table2( id integerprimary key, type_idinteger, name text default 'name1'  );  模糊查詢     Sqlite的模糊查詢與其餘數據庫相似,都使用了like關鍵字和%通配符。不過Sqlite在處理中文時會遇到一些麻煩。例如,使用下面的SQL語句向table2插入了一條記錄。 insert into table2(id, type_id, name) values(1, 20,'手機操做系統'); 在Sqlite控制檯中使用以下的SQL查詢是沒有問題的。 select * from table2 where name = '手機操做系統'; 但若是使用下面的模糊查詢語句,則沒法查詢到記錄。 select * from table2 where name like '手機%'; 發生這種事情的緣由是由於Sqlite控制檯在保存中文時使用的編碼格式是GB2312,而執行like操做時使用的是UTF-8。讀者可使用以下的命令來查看Sqlite控制檯當前的編碼格式。 PRAGMA encoding; 爲了可使用like模糊查詢中文,做者建議使用6.4.1節介紹的SQLite Expert Professional來執行insert、update等SQL語句來編輯數據。在這個工具中會直接使用UTF-8來保存中文。   分頁顯示記錄    分頁是在Web應用中常常被提到的概念。基本原理是從數據庫中得到查詢結果的部分數據,而後顯示在頁面中。雖然本書並無介紹Web程序的開發,但得到查詢結果的部分數據仍然很是重要。 Sqlite和MySQL相同,都使用了limit關鍵字來限制select語句返回的記錄數。limit須要兩個參數,第1個參數表示返回的子記錄集在父記錄集的開始位置(從0開始),第2個參數表示返回子記錄集的記錄數。第2個參數爲可選值,若是不指定這個參數,會得到從起始位置開始日後的全部記錄。例如,下面的select語句返回了table2表中從第11條記錄開始的100條記錄。 select * from table2 limit 10,100  事務     若是一次執行多條修改記錄(insert、update等)的SQL語句,那麼當某一條SQL語句執行失敗時,就須要取消其餘SQL語句對記錄的修改。不然就會形成數據不一致的狀況。而事務是解決這個問題的最佳方法。 在Sqlite中可使用BEGIN來開始一個事件,例如,下面的代碼執行了兩條SQL語句,若是第2條語句執行失敗,那麼第1條SQL語句執行的結果就會回滾,至關於沒執行這條SQL語句。 BEGIN; insert into table1(id, name) values(50,'Android'); insert into table2(id, name) values(1, '測試'); 若是想顯式地回滾記錄的修改結果,可使用ROLLBACK語句,代碼以下: BEGIN; delete from table2; ROLLBACK; 若是想顯式地提交記錄的修改結果,可使用COMMIT語句,代碼以下: BEGIN; delete from table2; COMMIT;
相關文章
相關標籤/搜索