Android 遊標
靜下心來,學一下Android的數據庫連接。
1.直接從getReadableDatabase()與getWritableDatabase()入手。
--getReadableDatabase()會返回一個只讀的數據庫對象。 讀數據庫就用它了。
--getWritableDatabase()返回一個可寫的數據庫對象。 寫數據庫就用它了。
區別:用一句話講,getReadableDatabase()會首先問一下--我可以即讀又寫嗎,如果不能,那我可以讀嗎?
2.獲得遊標的代碼
try{ SQLiteOpenHelper 對象=new 該類名的子類也就是目標數據庫(this); SQLiteDatabase db = 對象.getReadableDatabase(); Cursor cursor=db.query("DRINK表名", new String[]{"NAME列名","DESCRIPTION列名","IMAGE_RESOURCE_ID列名"}, "_id=?", new String[]{Integer.toString(drinkNo外部傳過來的一個整數編號)}, null,null,null //後面三個參數依次是:groupBy,having,orderBy ); //這裏得到了遊標,對遊標進行處理的代碼這裏來寫 }catch(SQLiteException e){ Toast toast=Toast.makeText(this,"Database unavailable",Toast.LENGTH_SHORT); }
其實就是通過SQLiteOpenHelper類的子類--目標數據庫的一個對象執行getReadableDatabase()函數來產生一個SQLitebase對象db,進而執行db.query(...)
3.要從遊標讀取記錄,首先需要導航到這個記錄。
主要有4個主要的方法可以用來在遊標包含的記錄間導航--moveToFirst()--moveToLast()--moveToPrevious()--moveToNext()
第一個記錄 cursor.moveToFirst() 返回true or false
最後一個記錄 cursor.moveToLast() 返回true or false
前一個記錄 cursor.moveToPrevious() 返回true or false
後一個記錄 cursor.moveToNext() 返回true or false
4.獲取遊標值
比如遊標中有這些數據。
name-->"Latte"
description-->"Espresso and steamed milk"
image_resource_id-->5454351
總共3列,你想得到name列的值。 String name==cursor.getString(0);
然後你想得到image_resesource列的值。 int imageResource=cursor.getInt(2);
5.關閉遊標和數據庫
遊標關閉--cursor.close();
數據庫關閉--db.close();
6.實際操作
主要在活動中的oncreate方法中,查詢數據庫返回一個遊標cursor,然後通過if判斷遊標位置是否存在,裏面就具體操作UI界面了,也就是使用遊標中的數據填充視圖。
7.註意點
在oncreate()方法的結尾,註意要close遊標和數據庫。
在最後的catch()中,要用Toast向用戶顯示一個消息。
晚安。2017-7-7 0:22
Android 遊標