sqlite介紹
sqlite:輕量級數據庫->不區分數據類型 嵌入式數據庫->不需要安裝相應的軟件支持 直接調用系統提供的API就可以使用了
創建數據庫實際上就是一個特殊的一個文件 這個文件在包下面
如何創建一個數據庫
[1]定義一個類繼承SQLiteOpenHelper
[2]在SQLiteOpenHelper中onCreate方法中執行sql語句
[2.1]create table info(_id integer primary key autoincrement,name text,age text)
[2.2]alter table info add sex text
注意事項
[1]Android推薦在建立表的時候用_id作爲主鍵
[1]自增長設置 _id integer primary key autoincrement
[2]sqlite不能降級
[3]使用就像File對象操作 創建對象 不會創建數據庫
使用sql語句進行增刪改查
[1]getReadableDatabase 獲取一個可讀數據庫 會先獲取一個getWritableDatabase 當磁盤滿了 只返回可讀
[2]getWritableDatabase 獲取一個可寫數據庫 當磁盤滿了 報錯
增[1]insert into info values(null,'張三',18,'男')
查[2]select * from info;
改[3]update info set age='20' where name='張三'
刪[4]delete from info where name='張三'
使用谷歌封裝好的API完成增刪改查
[1]使用sql語句實現增刪改查非常容易出錯
[2]nullColumnHack: 當values參數爲空或者裏面沒有內容的時候,insert是會失敗的
android事務操作
事務:要麼代碼執行都成功,要麼代碼執行都失敗
[1]create table info(_id integer primary key autoincrement,name text,money text)
[2]insert into info values(null,'小明',2000)
[2]insert into info values(null,'小紅',3000)
事務的標準寫法:
db.beginTransaction();
try {
...
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
業務邏輯:
[1]update info set money = money-200 where name='張三'
[2]update info set money = money+200 where name='李四'
事務沒有執行成功 就會執行回滾操作,實際上就是撤消之前的操作
ListView入門
簡介:
[1]垂直滾動的列表
[2]item內容來自於Adapter
ListView的優化
[1]屏幕顯示多少個item gteView方法就調用 多少次
[2]convertView 歷史緩存對象
ListView顯示覆雜佈局
infalte的獲取方式:
[1]View.inflate();
[2]LayoutInflater.from();
[3]getSystemService();
ListView原理
mvc:Mode(JavaBean) View(ListView) Controller(Adapter)
Adapter負責把數據展示到View上面去
- ListView奇怪現象
- 使用ListView必須要注意 高度避免使用wrap_content
arrayAdapter的使用
ListView的Item只要一個控件的時候考慮使用
String[] s=new String[]{"張三","李四","王五"};
lv.setAdapter(new ArrayAdapter<String>(this,R.layout.item, R.id.tv, s));
simpleAdapter的使用
ListView的Item有多個控件的時候考慮使用
HashMap<String, String> map3 = new HashMap<String, String>();
map3.put("xingming", "張三");
map3.put("dianhua", "13000000");
lv.setAdapter(new SimpleAdapter(this, data, R.layout.items,
new String[] { "xingming", "dianhua" }, new int[] { R.id.name,
R.id.phone }));