在Android平台中,整合了一個嵌入式關係型資料庫--SQLite,它支援NULL、INTEGER、REAL(浮點數字)、TEXT(字串文本)和BLOB(二進位對象)資料類型,雖然只支援五種資料類型,實際上可以接受varchar(n),char(n),decimal(p,s)等資料類型,在進行運算或儲存的時候會轉換成對應的五種資料類型。
ex: 可以在Integer類型的欄位中存放字串,或者在布爾類型欄位中存放浮點數,或者在字元型欄位中存放日期,but!定義為INTEGER PRIMARY KEY的欄位只能儲存64位整數,另外,在編寫CREATE TABLE語句時,可以省略跟在欄位名稱後面的資料類型;
create table person(personid integer primary key autoincrement,name varchar(20))//name的類型可省略;
select * from tablename where tiaojian group by 分組字句 having... order by 排序字句
select * from person
select * from person order by id desc/asc
select name from person group by name having count(*)>1
分頁:select * from Account limit 5 offset 3 或者 select * from Account limit3,5
插入語句:insert into tablename(欄位列表) values(值列表)
insert into person(name,age) values("Livingstone",22)
更新語句:update tablename set field1=val1,field2=val2 where 條件陳述式
update person set name="Livingstone" where id = 10
刪除語句:delete from tablename where 條件陳述式
delete from person where id=10
擷取添加記錄後自增長的ID值:select last_insert_rowid()
SQLiteDatabase專門提供了對於添加、刪除、更新、查詢的操作方法:insert(),delete(),update()和query();
Insert()方法用於添加資料,各個欄位的資料使用ContentValues進行存放,ContentValues類似於MAP,相對於 MAP,它提供了存取資料對應的put(String key,Xxx value)和getAsXxx(String key)方法;
long rowid=db.insert("person",null,values);//返回新添記錄的行號,與主鍵id無關;
不管第三個參數是否包含資料,執行Insert()方法必然添加一條記錄,如果第三個參數為空白,會添加一條除主鍵之外
其他欄位值為Null的記錄,Insert()方法內部其實是通過構造SQL陳述式完成資料的添加,第二個參數用於指定空值欄位的名稱:如果第三個參數values為Null或者元素個數為0,由於Insert()方法要求必須添加一條除了主鍵之外其它欄位為Null值的記錄,為了滿足SQL文法要求,insert語句必須給定一個欄位名,ex:insert into person(name) values(NULL),若不給欄位名,insert語句就為:insert into person() values(),對於欄位名,建議使用主鍵之外的欄位,如果使用了INTEGER類型的主鍵欄位,執行類似insert into person(personid) values(NULL)的insert語句後,該主鍵欄位值也不會為NULL,若第三個參數values不為Null並且元素個數大於0,第二個參數設定為null。