cursor的一些用法

2021-06-21 06:42:14 字數 1795 閱讀 2161

使用過 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一些淺顯見解

之前一直搞不懂cursor的資料模型是怎麼樣的,等到看到下面別人部落格中把cursor比作.net中的datareader才明白,原來是這麼回事。但是沒 學過.net的同志可能還是不明白cursor是怎麼一回事,怎麼取它的資料,和它的資料為什麼那麼取。上面的表代表的是乙個cursor物件。當我們用q...

的一些用法

action標籤,顧名思義,是用來呼叫action的標籤,在jsp中頁面中,可以具體指定某一命名空間中的某一action。而標籤的主體用於顯示及渲染actionr的處理結果。action標籤有如下幾個屬性 id 可選屬性,作為該action的引用id name 必選屬性,指定呼叫action nam...

IImage的一些用法

因為美工做出來的圖是png24,帶alpha通道透明的,用傳統的bitblt方法沒有辦法顯示 可能是本人比較笨啦,哈哈 所以採用了iimage的方法來進行畫圖。使用iimage的draw的方法時,要畫區域性是發現總是不對,查了一下msdn,發現是如下的問題。optional const rect s...