使用過 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...