android SQLite数据库用法图文详解(附源码)
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
1.背景
??????? SQLite是嵌入式設備使用的一種輕量型數據庫。可以通過執行sql語句對數據庫進行操作,android也為其提供了完善的函數接口支持。下面就來實現一個簡單的數據庫,可以實現查詢以及插入等功能。
例圖如下:
????????????????????????????????????????????????????????????????????????? 1-1 數據庫app
???
???? 如果你的手機已經root過,將手機連到pc端eclipse我們可以在DDMS中查看這個數據庫文件。路徑是data/data/app的包/databases就可一看到自己命名的*.db格式的數據庫文件了
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 1-2 DDMS截圖
?
??
??? 要想在pc端查看這個數據庫文件的內容,我們需要先將這個.db文件copy到電腦上,我是用的是linux系統,可以使用系統自帶的sqlite3來查看數據庫文件。?
進入shell,執行下面命令,進入數據庫
sqlite3 /home/CORPUSERS/28852262/Desktop/sec_db
????????????????????????????????????????????? 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 數據庫操作
2.代碼
????????? 代碼分兩部分,第一部分dbHelper,繼承android提供的類SQLiteOpenHelper用來管理數據庫。
??????? 第一部分
??????? 這個類的基本架構如下所示,包括建表,更新,命名等。此外我們如果要對數據庫增添插入,查詢,修改等功能的時候,也要寫在這個類里。
public class dbhelp extends SQLiteOpenHelper{public dbhelp(Context context, String name, CursorFactory factory, int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}???????? 第二部分
?????????????? 這個就是數據庫的調用,首先生成一個dbHelper對象,因為我們要將數據庫內容顯示在listivew里,我們要建立一??? 個curse來連接數據庫和適配器adapter,最后用listview輸出這個adapter即可。
db=new dbHelper(MainActivity.this);myCursor=db.select();SimpleCursorAdapter adpater=new SimpleCursorAdapter(this, R.layout.test, myCursor,new String[]{dbHelper.FIELD_TITLE},new int[]{R.id.topTextView});lv.setAdapter(adpater);
3.最后提供下源碼
點擊下載
總結
以上是生活随笔為你收集整理的android SQLite数据库用法图文详解(附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 4.3 操作源码实现系统
- 下一篇: android告别篇-对于源码我的一些看