一.SQLite的介紹
1.SQLite簡介
SQLite是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持 Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java、C++、.Net等,還有ODBC接口,同樣比起 Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。
2.SQLite的特點:
輕量級
SQLite和C/S模式的數據庫軟件不同,它是進程內的數據庫引擎,因此不存在數據庫的客戶端和服務器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。
不需要"安裝"
SQLite的核心引擎本身不依賴第三方的軟件,使用它也不需要"安裝"。有點類似那種綠色軟件。
單一文件
數據庫中所有的信息(比如表、視圖等)都包含在一個文件內。這個文件可以自由復制到其它目錄或其它機器上。
跨平台/可移植性
除了主流操作系統 windows,linux之後,SQLite還支持其它一些不常用的操作系統。
弱類型的字段
同一列中的數據可以是不同類型
開源
這個相信大家都懂的!
3.SQLite數據類型
一般數據采用的固定的靜態數據類型,而SQLite采用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:
NULL: 這個值為空值
VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。
CHAR(n):長度固定為n的字串,n不能超過 254。
INTEGER: 值被標識為整數,依據值的大小可以依次被存儲為1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被存儲為8字節的IEEE浮動標記序號.
TEXT: 值為文本字符串,使用數據庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改 變格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小時、分鐘、秒。
相信學過數據庫的童鞋對這些數據類型都不陌生的!!!!!!!!!!
二.SQLiteDatabase的介紹
Android提供了創建和是用SQLite數據庫的API。SQLiteDatabase代表一個數據庫對象,提供了操作數據庫的一些方法。在Android的SDK目錄下有sqlite3工具,我們可以利用它創建數據庫、創建表和執行一些SQL語句。下面是SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法
方法名稱
方法描述
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)
打開或創建數據庫
insert(String table,String nullColumnHack,ContentValues values)
添加一條記錄
delete(String table,String whereClause,String[] whereArgs)
刪除一條記錄
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)
查詢一條記錄
update(String table,ContentValues values,String whereClause,String[] whereArgs)
修改記錄
execSQL(String sql)
執行一條SQL語句
close()
關閉數據庫
1、打開或者創建數據庫
在Android 中以使用SQLiteDatabase的靜態方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打開或者創建一個數據庫。它會自動去檢測是否存在這個數據庫,如果存在則打開,不存在則創建一個數據庫;創建成功則返回一個SQLiteDatabase對象,否則拋出異常FileNotFoundException。
下面是創建名為“stu.db”數據庫的代碼:
- db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.lingdududu.db/databases/stu.db",null);
2、創建表
創建一張表很簡單。首先,編寫創建表的SQL語句,然後,調用SQLiteDatabase的execSQL()方法來執行SQL語句便可以創建一張表了。
下面的代碼創建了一張用戶表,屬性列為:_id(主鍵並且自動增加)、sname(學生姓名)、snumber(學號)
- private void createTable(SQLiteDatabase db){
- //創建表SQL語句
- String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)";
- //執行SQL語句
- db.execSQL(stu_table);
- }
3、插入數據
插入數據有兩種方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,參數一是表名稱,參數二是空列的默認值,參數三是ContentValues類型的一個封裝了列名稱和列值的Map;
②編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
第一種方法的代碼:
- private void insert(SQLiteDatabase db) {
- //實例化常量值
- ContentValues cValue = new ContentValues();
- //添加用戶名
- cValue.put("sname","xiaoming");
- //添加密碼
- cValue.put("snumber","01005");
- //調用insert()方法插入數據
- db.insert("stu_table",null,cValue);
- }
第二種方法的代碼:
- private void insert(SQLiteDatabase db){
- //插入數據SQL語句
- String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')";
- //執行SQL語句
- db.execSQL(sql);
- }