97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠見教育科技集團 >> 新聞動態(tài) >> Android資料 >> Android開發(fā)之手動建立SQLite數(shù)據(jù)庫  
 
Android開發(fā)之手動建立SQLite數(shù)據(jù)庫
分享到:

手動建立數(shù)據(jù)庫

手動建立數(shù)據(jù)庫就是利用sqlite3工具,通過手工輸入SQL命令來完成建立數(shù)據(jù)庫的過程。這里來介紹一下sqlite3。sqlite3是SQLite數(shù)據(jù)庫自帶的一個SQL命令執(zhí)行工具,它基于命令行,并可以顯示命令執(zhí)行結果。sqlite3工具是被集成在Android系統(tǒng)中的,用戶在Linux的命令行界面中輸入sqlite3即可啟動sqlite3工具,并得到工具的版本信息,如代碼清單7-21所示。

代碼清單7-21 啟動sqlite3工具


# sqlite3
    SQLite version
    Enter ".help " for instructions
    sqlite>

注意:啟動Linux的命令行界面的方法是在模擬器已經啟動的前提下,在CMD中輸入adb shell命令。

由上段代碼可以看出,在啟動sqlite3工具后,提示符從“#”變?yōu)椤皊qlite>”,表示命令行界面已經進入與SQLite數(shù)據(jù)庫的交互模式,此時可以輸入命令對數(shù)據(jù)庫的內容進行建立、刪除或修改。而正確退出sqlite3工具的方法是使用.exit命令。

代碼清單7-22 退出sqlite3工具


sqlite> .exit
    #

原則上,每個應用程序的數(shù)據(jù)庫都保存在各自的/data/data//databases目錄下,但如果使用手工方式建立數(shù)據(jù)庫,則必須手工建立數(shù)據(jù)庫目錄,目前版本無須修改數(shù)據(jù)庫目錄的權限。

在SQLite數(shù)據(jù)庫中,每個數(shù)據(jù)庫保存在一個獨立的文件中,使用sqlite3工具后加文件名的方式打開數(shù)據(jù)庫文件,如果指定文件不存在,sqlite3工具則自動創(chuàng)建新文件。

代碼清單7-23所示的代碼將創(chuàng)建名為people的數(shù)據(jù)庫,在文件系統(tǒng)中將產生一個名為people.db的數(shù)據(jù)庫文件。

代碼清單7-23 創(chuàng)建名為people的數(shù)據(jù)庫


# sqlite3 people.db
    SQLite version
    Enter ".help " for instructions
    sqlite>

代碼清單7-24所示的代碼在新創(chuàng)建的數(shù)據(jù)庫中,構造了一個名為peopleinfo的表,使用create table命令,關系模式為peopleinfo ( _id, name, age, height)。表包含4個屬性,_id是整型的主鍵;name表示姓名,數(shù)據(jù)類型為字符型,not null表示這個屬性一定要填寫,不可以為空值;age表示年齡,數(shù)據(jù)類型為整數(shù)型;height表示身高,數(shù)據(jù)類型為浮點型。

代碼清單7-24 創(chuàng)建名為peopleinfo的表


sqlite> create table peopleinfo
    ...> (_id integer primary key autoincrement,
    ...> name text not null,
    ...> age integer,
    ...> height float);
    sqlite>

為了確認數(shù)據(jù)表是否創(chuàng)建成功,可以使用.tables命令,顯示當前數(shù)據(jù)庫中的所有表。從代碼清單7-25所示的代碼中可以觀察到,當前數(shù)據(jù)庫僅有一個名為peopleinfo的表。

代碼清單7-25 查看數(shù)據(jù)庫中表情況


sqlite> .tables
    peopleinfo
    sqlite>

當然,也可以使用.schema命令查看建立表時使用的SQL命令。如果當前數(shù)據(jù)庫中包含多個表,則可以使用[.schema 表名]的形式,顯示指定表的建立命令,如代碼清單7-26所示。

代碼清單7-26 查看數(shù)據(jù)庫中指定表的建立命令


sqlite>.schema
    CREATE TABLE peopleinfo (_id integer primary key autoincrement,
    name text not null, age integer, height float);
    sqlite>

向peopleinfo表中添加數(shù)據(jù),使用insert into … values命令,如代碼清單7-27所示。

代碼清單7-27 向peopleinfo表中添加數(shù)據(jù)


sqlite> insert into peopleinfo values(null,'Tom',21,1.81);
    sqlite> insert into peopleinfo values(null,'Jim',22,1.78);
    sqlite> insert into peopleinfo values(null,'Lily',19,1.68);
    sqlite> insert into peopleinfo values(null,'Lucy',21,1.68);
    sqlite> insert into peopleinfo values(null,'John',21,1.86);

代碼運行成功后,數(shù)據(jù)庫的peopleinfo表將有3條數(shù)據(jù)。因為_id是自增加的主鍵,因此在輸入null后,SQLite數(shù)據(jù)庫會自動填寫該項的內容。終得到的表數(shù)據(jù)如表7-4所示。

表7-4 peopleinfo表數(shù)據(jù)

 _id  name  age  height
 1  Tom  21  1.81
 2  Jim  22  1.78
 3  Lily  19  1.68
 4  Lucy  21  1.68
 5  John  21  1.86

在數(shù)據(jù)添加完畢后,使用select命令,顯示指定數(shù)據(jù)表中的所有數(shù)據(jù)信息,命令格式為[select 屬性 from 表名]。代碼清單7-28所示的代碼用來顯示peopleinfo表的所有數(shù)據(jù)。

代碼清單7-28 顯示peopleinfo表的所有數(shù)據(jù)


select * from peopleinfo;
    1|Tom|21|1.81
    2|Jim|22|1.78
    3|Lily|19|1.68
    4|Lucy|21|1.68
    5|John|21|1.86
    sqlite>

上面的查詢結果看起來不是非常直觀,可以使用mode命令將結果輸出格式更改為“表格”方式。

代碼清單7-29 以表格格式顯示peopleinfo表的所有數(shù)據(jù)


sqlite> .mode column
    sqlite> select * from peopleinfo;
    1        Tom         21        1.81
    2        Jim         22        1.78
    3        Lily        19        1.68
    4        Lucy        21        1.68
    5        John        21        1.86
    sqlite>

注意:

mode命令除了支持常見的column格式外,還支持csv格式、html格式、insert格式、line格式、list格式、tabs格式和tcl格式。

更新數(shù)據(jù)可以使用update命令,命令格式為[update 表名 set 屬性=“新值” where 條件]。更新數(shù)據(jù)后,同樣使用select命令顯示數(shù)據(jù),則可以確定數(shù)據(jù)是否正確更新。

代碼清單7-30所示的代碼將姓名為Lily數(shù)據(jù)中的高度值更新為1.88。

代碼清單7-30 以表格格式顯示peopleinfo表更新后的數(shù)據(jù)


sqlite> update peopleinfo set height=1.88 where name='Lily';
    sqlite> select * from peopleinfo;
    select * from peopleinfo;
    1        Tom         21        1.81
    2        Jim         22        1.78
    3        Lily        19        1.68
    4        Lucy        21        1.68
    5        John        21        1.86
    sqlite>

刪除數(shù)據(jù)可以使用delete命令,命令格式為[delete from 表名where 條件]。代碼清單7-31所示的代碼將_id為3的數(shù)據(jù)從表peopleinfo中刪除。

代碼清單7-31 刪除數(shù)據(jù)


sqlite> delete from peopleinfo where _id=3;
    sqlite> select * from peopleinfo;
    select * from peopleinfo;
    1        Tom         21        1.81
    2        Jim         22        1.78
    4        Lucy        21        1.68
    5        John        21        1.86
    sqlite>

sqlite3除了支持上述提到的增刪改查的數(shù)據(jù)庫操作外,對于復雜的查詢,例如,order by、group by,sum、count類的聚合函數(shù)等也支持。如代碼清單7-32、7-33所示。

代碼清單7-32 order by


sqlite> select * from peopleinfo order by height;
    select * from peopleinfo order by height;
    4        Lucy        21        1.68
    2        Jim         22        1.78
    1        Tom         21        1.81
    5        John        21        1.86
    sqlite>

代碼清單7-33 group by、count


sqlite> select age,count(_id) as count from peopleinfo group by age having count(_id)>1;
    select * from peopleinfo order by height;
    21        3
    sqlite>

sqlite3工具還支持大量的命令,可以使用.help命令查詢sqlite3的命令列表。以下簡單介紹幾種命令,如表7-5所示。

表7-5 Sqlite3支持命令

編號 命令 說明
1 .bail ON|OFF 遇到錯誤時停止,默認為OFF
2 .databases 顯示數(shù)據(jù)庫名稱和文件位置
3 .dump ?TABLE? ... 將數(shù)據(jù)庫以SQL文本形式導出
4 .echo ON|OFF 開啟和關閉回顯
5 .exit 退出
6 .explain ON|OFF 開啟或關閉適當輸出模式,如果開啟模式更改為column,并自動設置寬度
7 .header(s) ON|OFF 開啟或關閉標題顯示
8 .help 顯示幫助信息
9 .import FILE TABLE 將數(shù)據(jù)從文件導入表中
10 .indices TABLE 顯示表中所有列名
11 .load FILE ?ENTRY? 導入擴展庫
12 .mode MODE ?TABLE? 設置輸入格式
13 .nullvalue STRING 打印時使用STRING代替NULL
14 .output FILENAME 將輸入保存到文件
15 .output stdout 將輸入顯示在屏幕上
16 .prompt MAIN CONTINUE 替換標準提示符
17 .quit 退出
18 .read FILENAME 在文件中執(zhí)行SQL語句
19 .schema ?TABLE? 顯示表的創(chuàng)建語句
20 .separator STRING 更改輸入和導入的分隔符
21 .show 顯示當前設置變量值
22 .tables ?PATTERN? 顯示符合匹配模式的表名
23 .timeout MS 嘗試打開被鎖定的表ms(毫秒)
24 .timer ON|OFF 開啟或關閉CPU計時器
25 .width NUM NUM ... 設置column模式的寬度
 更多相關文章

·Android開發(fā)之SQLite數(shù)據(jù)庫簡介
·Android開發(fā)之代碼建庫(SQLiteOpenHelper)
·Android開發(fā)之使用數(shù)據(jù)提供者
·Android開發(fā)之SharedPreferences數(shù)據(jù)存儲方式
·Android開發(fā)之使用Intent發(fā)送廣播消息