原文:使用過 sqlite 資料庫的童鞋對 cursor 應該不陌生,如果你是搞.net 開發你大可以把cursor理解成 ado.net 中的資料集合相當於datareader。今天特地將它單獨拿出來談,加深自己和大家對android 中使用 cursor 的理解。
關於 cursor
在你理解和使用 android cursor 的時候你必須先知道關於 cursor 的幾件事情:
cursor 是每行的集合。
使用 movetofirst() 定位第一行。
你必須知道每一列的名稱。
你必須知道每一列的資料型別。
cursor 是乙個隨機的資料來源。
所有的資料都是通過下標取得。
關於 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()
移動游標到上一行
下面來看看一小段**:
if (cur.movetofirst() == false)
訪問 cursor 的下標獲得其中的資料
int namecolumnindex = cur.getcolumnindex(people.name);
string name = cur.getstring(namecolumnindex);
現在讓我們看看如何迴圈 cursor 取出我們需要的資料
while(cur.movetonext())
當cur.movetonext() 為假時將跳出迴圈,即 cursor 資料迴圈完畢。
isbeforefirst()
返回游標是否指向之前第一行的位置
isafterlast()
返回游標是否指向第最後一行的位置
isclosed()
如果返回 true 即表示該遊戲標己關閉
有了以上的方法,可以如此取出資料
for(cur.movetofirst();!cur.isafterlast();cur.movetonext())
tip:在android 查詢資料是通過cursor 類來實現的。當我們使用 sqlitedatabase.query()方法時,就會得到cursor物件, cursor所指向的就是每一條資料。結合ado.net 的知識可能好理解一點。
cursor 位於 android.database.cursor類,可見出它的設計是基於資料庫服務產生的。
Android中cursor類的使用
android中從資料庫中查出來的資料一般都存在cursor中即 cursor mcursor msqlitedatabase.query select form table null 說白了就是乙個資料集合,具體的說就是每行資料集合,下面是api中對cursor的解釋 關於 cursor,1,cu...
Android中cursor類的使用
android中從資料庫中查出來的資料一般都存在cursor中即 cursor mcursor msqlitedatabase.query select form table null 說白了就是乙個資料集合,具體的說就是每行資料集合,下面是api中對cursor的解釋 關於 cursor,1,cu...
Android中的 Cursor 類總結
cursor是把查詢到的結果集封裝在乙個cursor物件當中。cursor就像是結果集上的乙個游標,可以向前向後移動。取出cursor中的資料一般是用 while cursor.movetonext 很多時候,不要忘記movetofirst 一般都是從第一行開始取值 移動到需要的行的時候,根據下標來...