支持數(shù)據(jù)類型:
- NULL,INTEGER,REAL,TEXT,BLOB
- 空值隔披,整形值征冷,浮點值,字符串坯屿,二進制對象油湖。
動態(tài)數(shù)據(jù)類型(弱引用):
- 當某個值插入到數(shù)據(jù)庫時,SQLite將會檢查它的類型领跛,如果該類型與關聯(lián)的列不匹配乏德,SQLite會嘗試將該值轉化成該列的類型,如果不能轉換吠昭,則該值將作為本身的類型喊括。主鍵是integer時不能轉。
sql語句:
- 查詢語句: select * from 表名 where 條件子句 group by 分組字句 having ... order by 排序子句
- 如: select * from person
select * from person order by id desc
select name from person group by name having count(*)>1
分頁SQL與mysql類似矢棚,下面SQL語句獲取5條記錄郑什,跳過前面3條記錄
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5 - 插入語句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(‘傳智’,3)
- 更新語句:update 表名 set 字段名=值 where 條件子句蒲肋。如:update person set name=‘傳智‘ where id=10
- 刪除語句:delete from 表名 where 條件子句蘑拯。如:delete from person where id=10
占位?
sql中使用的單引號兜粘,如下:
db.execSQL("insert into person(name, age) values('林計欽', 24)");
為了解決轉意的麻煩申窘,推薦使用?占位
SQLiteDatabase類提供了一個重載后的execSQL(String sql, Object[] bindArgs)方法孔轴,使用這個方法可以解決前面提到的問題剃法,因為這個方法支持使用占位符參數(shù)(?)如:
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"張三", 4});
execSQL(String sql, Object[] bindArgs)方法的第一個參數(shù)為SQL語句,第二個參數(shù)為SQL語句中占位符參數(shù)的值距糖,參數(shù)值在數(shù)組中的順序要和占位符的位置對應玄窝。
完整實例:
SQLiteDatabase db = ....;
db.beginTransaction();//開始事務
try {
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"李四", 20});
db.execSQL("update person set name=? where personid=?", new Object[]{"asd", 1});
db.setTransactionSuccessful();//調用此方法會在執(zhí)行到endTransaction() 時提交當前事務,
如果不調用此方法會回滾事務
} finally {
db.endTransaction();//由事務的標志決定是提交事務悍引,還是回滾事務
}
db.close();默認的一條sql語句就是一個事物恩脂,但是不如一次插入20條數(shù)據(jù),用上面的這種方式就會提高性能趣斤。
GreenDao 升級
http://blog.csdn.net/growth58/article/details/50453038