android中從資料庫中查出來的資料一般都存在cursor中即:Cursor mCursor = mSQLiteDatabase.query("select * form table", null),說白了就是一個資料集合,具體的說就是每行資料集合,下面是api中對cursor的解釋
關於 Cursor,
1,Cursor 是每行的集合。
2,使用 moveToFirst() 定位第一行。
3,Cursor 是一個隨機的資料來源。
4,所有的資料都是通過下標取得。
Cursor 的一些方法,
close()
關閉遊標,釋放資源
copyStringToBuffer(int
columnIndex,CharArrayBuffer
buffer)
在緩衝區中檢索請求的列的文本,將將其儲存
getColumnCount()
返回所有列的總數
getColumnIndex(String
columnName)
返回指定列的索引,如果不存在返回-1
getColumnIndexOrThrow(String
columnName)
從零開始返回指定列名稱,如果不存在將拋出IllegalArgumentException
異常。
getColumnName(int
columnIndex)
從給定的索引返回列名
getColumnNames()
返回一個字串數組的列名
getCount()
返回Cursor 中的行數
moveToFirst()
移動游標到第一行
moveToLast()
移動游標到最後一行
moveToNext()
移動游標到下一行
moveToPosition(int
position)
移動游標到一個絕對的位置
moveToPrevious()
移動游標到上一行
1 看些這幾行代碼一般是判斷Cursor是否為空白,也就是沒資料
[java]
view plaincopy
- if (cur.moveToFirst() == false)
- {
- //為空白的Cursor
- return;
- }
或者
[java]
view plaincopy
- if (null != cur ){
-
- }
其實第二中方法方便,第一種是為了便於理解
2 通過Cursor 的下標獲得資料,下標我的理解是每行行的第幾列,下面方法就是獲得某行中某列的資料
[java]
view plaincopy
- int nameColumnIndex = cur.getColumnIndex("name");
- String name = cur.getString(nameColumnIndex);
其中name為列名,首先通過列名稱找出在該行中位於第幾列,通過列索引找出該行中name欄位的值
3,遍曆cursor中每行資料
[java]
view plaincopy
- while(cur.moveToNext())
- {
- //游標移動成功
- //把資料取出
- }
或者
[java]
view plaincopy
- do {
-
-
- }while(cur.moveToNext())
要是不想用上面這2種迴圈,習慣用for迴圈,google有方法實現for迴圈
[java]
view plaincopy
- for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())
- {
- int nameColumn = cur.getColumnIndex(People.NAME);
- int phoneColumn = cur.getColumnIndex(People.NUMBER);
- String name = cur.getString(nameColumn);
- String phoneNumber = cur.getString(phoneColumn);
- }
isBeforeFirst()
返回遊標是否指向之前第一行的位置
isAfterLast()
返回遊標是否指向第最後一行的位置
isClosed()
close()
關閉遊標,釋放資源
copyStringToBuffer(int
columnIndex,CharArrayBuffer
buffer)
在緩衝區中檢索請求的列的文本,將將其儲存
getColumnCount()
返回所有列的總數
getColumnIndex(String
columnName)
返回指定列的索引,如果不存在返回-1
getColumnIndexOrThrow(String
columnName)
從零開始返回指定列名稱,如果不存在將拋出IllegalArgumentException
異常。
getColumnName(int
columnIndex)
從給定的索引返回列名
getColumnNames()
返回一個字串數組的列名
getCount()
返回Cursor 中的行數
moveToFirst()
移動游標到第一行
moveToLast()
移動游標到最後一行
moveToNext()
移動游標到下一行
moveToPosition(int
position)
移動游標到一個絕對的位置
moveToPrevious()
移動游標到上一行
1 看些這幾行代碼一般是判斷Cursor是否為空白,也就是沒資料
[java]
view plaincopy
- if (cur.moveToFirst() == false)
- {
- //為空白的Cursor
- return;
- }
或者
[java]
view plaincopy
- if (null != cur ){
-
- }
其實第二中方法方便,第一種是為了便於理解
2 通過Cursor 的下標獲得資料,下標我的理解是每行行的第幾列,下面方法就是獲得某行中某列的資料
[java]
view plaincopy
- int nameColumnIndex = cur.getColumnIndex("name");
- String name = cur.getString(nameColumnIndex);
其中name為列名,首先通過列名稱找出在該行中位於第幾列,通過列索引找出該行中name欄位的值
3,遍曆cursor中每行資料
[java]
view plaincopy
- while(cur.moveToNext())
- {
- //游標移動成功
- //把資料取出
- }
或者
[java]
view plaincopy
- do {
-
-
- }while(cur.moveToNext())
要是不想用上面這2種迴圈,習慣用for迴圈,google有方法實現for迴圈
[java]
view plaincopy
- for(cur.moveToFirst();!cur.isAfterLast();cur.moveToNext())
- {
- int nameColumn = cur.getColumnIndex(People.NAME);
- int phoneColumn = cur.getColumnIndex(People.NUMBER);
- String name = cur.getString(nameColumn);
- String phoneNumber = cur.getString(phoneColumn);
- }
isBeforeFirst()
返回遊標是否指向之前第一行的位置
isAfterLast()
返回遊標是否指向第最後一行的位置
isClosed()