SQLite是嵌入式裝置使用的一種輕量型資料庫。可以通過執行sql語句對資料庫進行操作,android也為其提供了完善的函數接口支援。下面就來實作一個簡單的資料庫,可以實作查詢以及插入等功能。
例圖如下:
1-1 資料庫app
如果你的手機已經root過,将手機連到pc端eclipse我們可以在DDMS中檢視這個資料庫檔案。路徑是data/data/app的包/databases就可一看到自己命名的*.db格式的資料庫檔案了
1-2 DDMS截圖
要想在pc端檢視這個資料庫檔案的内容,我們需要先将這個.db檔案copy到電腦上,我是用的是linux系統,可以使用系統自帶的sqlite3來檢視資料庫檔案。
進入shell,執行下面指令,進入資料庫
1-3 進入資料庫
以下為sqlite 在linux下的使用方法
1、安裝sqlite3
ubuntu下安裝sqlite3直接在終端運作指令:
#apt-get install sqlite3
檢視版本資訊:
#sqlite3 -version
2 、sqlite3常用指令
目前目錄下建立或打開test.db資料庫檔案,并進入sqlite指令終端,以sqlite>字首辨別:
#sqlite3 test.db
檢視資料庫檔案資訊指令(注意指令前帶字元'.'):
sqlite>.database
檢視所有表的建立語句:
sqlite>.schema
檢視指定表的建立語句:
sqlite>.schema table_name
以sql語句的形式列出表内容:
sqlite>.dump table_name
設定顯示資訊的分隔符:
sqlite>.separator symble
Example:設定顯示資訊以‘:’分隔
sqlite>.separator :
設定顯示模式:
sqlite>.mode mode_name
Example:預設為list,設定為column,其他模式可通過.help檢視mode相關内容
sqlite>.mode column
輸出幫助資訊:
sqlite>.help
設定每一列的顯示寬度:
sqlite>.width width_value
Example:設定寬度為2
sqlite>.width 2
列出目前顯示格式的配置:
sqlite>.show
退出sqlite終端指令:
sqlite>.quit
或
sqlite>.exit
3、sqlite3指令
sql的指令格式:所有sql指令都是以分号(;)結尾,兩個減号(--)則表示注釋。
如:
sqlite>create studen_table(Stu_no interger PRIMARY KEY, Name text NOT NULL, Id interger UNIQUE, Age interger CHECK(Age>6), School text DEFAULT 'xx國小);
該語句建立一個記錄學生資訊的資料表。
3.1 sqlite3存儲資料的類型
NULL:辨別一個NULL值
INTERGER:整數類型
REAL:浮點數
TEXT:字元串
BLOB:二進制數
3.2 sqlite3存儲資料的限制條件
Sqlite常用限制條件如下:
PRIMARY KEY - 主鍵:
1)主鍵的值必須唯一,用于辨別每一條記錄,如學生的學号
2)主鍵同時也是一個索引,通過主鍵查找記錄速度較快
3)主鍵如果是整數類型,該列的值可以自動增長
NOT NULL - 非空:
限制列記錄不能為空,否則報錯
UNIQUE - 唯一:
除主鍵外,限制其他列的資料的值唯一
CHECK - 條件檢查:
限制該列的值必須符合條件才可存入
DEFAULT - 預設值:
列資料中的值基本都是一樣的,這樣的字段列可設為預設值
3.3 sqlite3常用指令
1)建立資料表
create table table_name(field1 type1, field2 type1, ...);
table_name是要建立資料表名稱,fieldx是資料表内字段名稱,typex則是字段類型。
例,建立一個簡單的學生資訊表,它包含學号與姓名等學生資訊:
create table student_info(stu_no interger primary key, name text);
2)添加資料記錄
insert into table_name(field1, field2, ...) values(val1, val2, ...);
valx為需要存入字段的值。
例,往學生資訊表添加資料:
Insert into student_info(stu_no, name) values(0001, alex);
3)修改資料記錄
update table_name set field1=val1, field2=val2 where expression;
where是sql語句中用于條件判斷的指令,expression為判斷表達式
例,修改學生資訊表學号為0001的資料記錄:
update student_info set stu_no=0001, name=hence where stu_no=0001;
4)删除資料記錄
delete from table_name [where expression];
不加判斷條件則清空表所有資料記錄。
例,删除學生資訊表學号為0001的資料記錄:
delete from student_info where stu_no=0001;
5)查詢資料記錄
select指令基本格式:
select columns from table_name [where expression];
a查詢輸出所有資料記錄
select * from table_name;
b限制輸出資料記錄數量
select * from table_name limit val;
c升序輸出資料記錄
select * from table_name order by field asc;
d降序輸出資料記錄
select * from table_name order by field desc;
e條件查詢
select * from table_name where expression;
select * from table_name where field in ('val1', 'val2', 'val3');
select * from table_name where field between val1 and val2;
f查詢記錄數目
select count (*) from table_name;
g區分列資料
select distinct field from table_name;
有一些字段的值可能會重複出現,distinct去掉重複項,将列中各字段值單個列出。
6)建立索引
當說資料表存在大量記錄,索引有助于加快查找資料表速度。
create index index_name on table_name(field);
例,針對學生表stu_no字段,建立一個索引:
create index student_index on student_table(stu_no);
建立完成後,sqlite3在對該字段查詢時,會自動使用該索引。
7)删除資料表或索引
drop table table_name;
drop index index_name;
輸入相應指令我們看到了對資料庫的所有操作。
1-4 資料庫操作
代碼分兩部分,第一部分dbHelper,繼承android提供的類SQLiteOpenHelper用來管理資料庫。
這個類的基本架構如下所示,包括建表,更新,命名等。此外我們如果要對資料庫增添插入,查詢,修改等功能的時候,也要寫在這個類裡。
這個就是資料庫的調用,首先生成一個dbHelper對象,因為我們要将資料庫内容顯示在listivew裡,我們要建立一 個curse來連接配接資料庫和擴充卡adapter,最後用listview輸出這個adapter即可。
<a target="_blank" href="https://github.com/jimenbian/mycode">點選下載下傳</a>