對Android中的Cursor一些淺顯見解

2021-06-20 22:51:29 字數 1778 閱讀 1003

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

上面的表代表的是乙個cursor物件。

當我們用query方法查詢到的是乙個指向cursor物件第一行的前面一行資料,即上圖中的空行。所以我們使用cursor.movetonext()方法時,是指向cursor的第一行資料,而不是第二行。

如何得到cursor中的資料呢?

當我們使用了cursor.movetonext()後,cursor指向了第一行資料,由於是資料庫中的表,所以每一行每一列都有對應的資料型別和列名。

當我們要取出cursor物件中的乙個對應的資料,首先我們要先確定它的資料型別,用cursor.get***()。***代表的是你要取出的資料的資料型別,當前我們要取出第一行的「列名2」的資料。就可以用cursor.getstring()。

然後我們確定了資料型別後,肯定要確定列名,所以我們要得到cursor物件中的列名,用cursor.getcolumnindex("列名")來獲得。

這樣我們要取出第一行第二列的資料時,就可以用cursor.getstring(cursor.getcolumnindex("列名2"))來獲得。

取第二行的資料只要繼續cursor.movetonext(),到了第二行後,跟取第一行的資料是一樣的。

以上是我的見解,有不同意見可以交流討論。

下面太懶,一些api中的知識複製一下別人的。

使用過 sqlite 資料庫的童鞋對 cursor 應該不陌生,如果你是搞.net 開發你大可以把cursor理解成 ado.net 中的資料集合相當於datareader。今天特地將它單獨拿出來談,加深自己和大家對android 中使用 cursor 的理解。

關於 cursor

在你理解和使用 android cursor 的時候你必須先知道關於 cursor 的幾件事情:

關於 cursor 的重要方法

下面來看看一小段**:

if(cur.movetofirst() 

==false)

訪問 cursor 的下標獲得其中的資料

intnamecolumnindex 

=cur.getcolumnindex(people.name);

string name 

=cur.getstring(namecolumnindex);

現在讓我們看看如何迴圈 cursor 取出我們需要的資料

while

(cur.movetonext())

當cur.movetonext() 為假時將跳出迴圈,即 cursor 資料迴圈完畢。

有了以上的方法,可以如此取出資料

for(cur.movetofirst();

!cur.isafterlast();cur.movetonext())

tip:在android 查詢資料是通過cursor 類來實現的。當我們使用 sqlitedatabase.query()方法時,就會得到cursor物件, cursor所指向的就是每一條資料。結合ado.net 的知識可能好理解一點。

cursor 位於 android.database.cursor類,可見出它的設計是基於資料庫服務產生的。

另外,還有幾個己知的子類,分別為:

CSS中控制滑鼠指標形狀的屬性cursor

最常用的滑鼠指標變成小手形 cursor pointer 曾經ie5cursor hand也可以有小手形,現經測試高版本ie edge firefox chrome qq 360 等瀏覽器均失敗 強烈建議使用pointer 案例 css滑鼠手型效果 pointer hand css滑鼠由系統自動給出...

Android中對SQLite的操作

1.總論 通常自定義類,並繼承自sqliteopenhelper,在預設的建構函式中,會呼叫父類的建構函式。只需將資料庫名傳入即可。super context,database name,null,database version 2.建立表 首先,獲取乙個可寫的資料庫物件 database thi...

彩筆對android中ninepatch的理解

目錄 sdk tools draw9patch 為啥叫9patch呢,也許是通過劃線劃點的操作,將素材裁成9分,有點類似於九宮格的樣子。自行腦補。從左到右依次說明都是幹嘛地!zoom 操作介面縮放 show lock 覆蓋原圖大小,沒什麼亂用 show content 劃右側和下側的線可能需要點上,...