<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    《Android/OPhone 開發完全講義》連載(10):Sqlite數據庫

    本文為原創,如需轉載,請注明作者和出處,謝謝!

        現在終于到講解數據庫的時間了。數據庫也是Android存儲方案的核心。在Android系統中使用了Sqlite數據庫。Sqlite是非常輕量的數據庫。從Sqlite的標志是一根羽毛就可以看出Sqlite的目標就是無論是過去、現在,還是將來,Sqlite都將以輕量級數據庫的姿態出現。Sqlite雖然輕量,但在執行某些簡單的SQL語句時甚至比MySQLPostgresql還快。由于很多讀者是第一次接觸Sqlite數據庫,因此,在介紹如何在Android中使用Sqlite之前,先在本節簡單介紹一下如何在PC上建立Sqlite數據庫,以及Sqlite數據庫的一些特殊方面(由于本書的目的不是介紹Sqlite數據庫,因此,與其他數據庫類似的部分(如insertupdate等)本書將不再介紹。沒有掌握這些知識的讀者可以參閱其他關于數據庫方面的書籍。
    6.4.1 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
    作者在寫作本書時使用了SQLiteExpert Professional,這也是作者推薦使用的Sqlite管理工具。該工具擁有大量的可視化功能,例如,建立數據庫、建立表、SQL Builder等工具。圖6.16SQLite ExpertProfessional的主界面。




    6.4.2  創建數據庫和表

        使用
    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文件中建立table1table2兩個表。
    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'

    );
    6.4.3  模糊查詢

        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來執行insertupdateSQL語句來編輯數據。在這個工具中會直接使用UTF-8來保存中文。
    6.4.4  分頁顯示記錄

       分頁是在
    Web應用中經常被提到的概念。基本原理是從數據庫中獲得查詢結果的部分數據,然后顯示在頁面中。雖然本書并沒有介紹Web程序的開發,但獲得查詢結果的部分數據仍然非常重要。
    SqliteMySQL相同,都使用了limit關鍵字來限制select語句返回的記錄數。limit需要兩個參數,第1個參數表示返回的子記錄集在父記錄集的開始位置(從0開始),第2個參數表示返回子記錄集的記錄數。第2個參數為可選值,如果不指定這個參數,會獲得從起始位置開始往后的所有記錄。例如,下面的select語句返回了table2表中從第11條記錄開始的100條記錄。
    select * from table2 limit 10 100
    6.4.5 事務

        如果一次執行多條修改記錄(
    insertupdate等)的SQL語句,那么當某一條SQL語句執行失敗時,就需要取消其他SQL語句對記錄的修改。否則就會造成數據不一致的情況。而事務是解決這個問題的最佳方法。
    Sqlite中可以使用BEGIN來開始一個事件,例如,下面的代碼執行了兩條SQL語句,如果第2條語句執行失敗,那么第1SQL語句執行的結果就會回滾,相當于沒執行這條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;



    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2010-10-28 22:16 銀河使者 閱讀(6857) 評論(0)  編輯  收藏 所屬分類: java 原創移動(mobile) 圖書GoogleAndroid/OPhone

    主站蜘蛛池模板: 亚洲成人福利网站| 国产亚洲精品影视在线产品| 亚洲AV无码久久精品蜜桃| 国产精品1024在线永久免费 | 欧美男同gv免费网站观看| 亚洲Aⅴ无码专区在线观看q| 免费黄色电影在线观看| 亚洲日韩欧洲无码av夜夜摸| 三年片免费高清版 | 亚洲精品国产福利片| 91香蕉国产线观看免费全集 | 亚洲日本香蕉视频| 久久WWW免费人成一看片| 亚洲日韩中文字幕天堂不卡| 一个人免费高清在线观看| 亚洲中文无码永久免| 免费无遮挡无码视频网站| 朝桐光亚洲专区在线中文字幕| 国产精品二区三区免费播放心| 国产亚洲高清在线精品不卡| 亚洲国产成人久久综合碰| 中国人免费观看高清在线观看二区 | 亚洲人成色777777精品| 午夜国产大片免费观看| 一级做性色a爰片久久毛片免费| 亚洲精品国产日韩无码AV永久免费网 | 亚洲日韩精品A∨片无码加勒比| 最新69国产成人精品免费视频动漫 | 亚洲处破女AV日韩精品| 久久久久国产精品免费看| 久久精品国产亚洲av麻豆图片| 精品久久免费视频| 国产成人免费ā片在线观看老同学 | 羞羞漫画登录页面免费| 亚洲午夜久久久影院伊人| 3344免费播放观看视频 | 男女猛烈xx00免费视频试看| 亚洲熟妇丰满多毛XXXX| 精品久久8x国产免费观看| 亚洲AV无码国产剧情| 国产亚洲精AA在线观看SEE|