Android學習過程的Cursor遊標填坑筆記
最近在網上看了如下程式碼:
通過在資料庫中查詢資料(字串):
private boolean hasData(String tempName) {
// 從資料庫中Record表裡找到name=tempName的id
Cursor cursor = helper.getReadableDatabase().rawQuery(
"select id as _id,name from records where name =?", new String[]{tempName});
// 判斷是否有下一個
return cursor.moveToNext();
}
其實,Cursor(遊標)可以看成一個指標,它會通過指向某一行(代表行的集合),然後才來取出資料,說是這麼說,然而,如果沒有在一開始將cursor進行moveToFirst()的話,它就會指向第一行資料的前面,也就是下標為-1的位置,此時直接進行資料提取,執行之後就會爆出異常。
分析上面程式:
如果查詢到了資料,cursor就會指向該行資料的前一行的位置,比如查到了第三行(行下標為2)的資料,那麼Cursor指向的就是下標為1的位置,那麼進行moveToNext()(此行正帶有需要的資料)就會返回true。
如果像這樣:(推薦的做法)一開始就已經進行moveToFirst(),那麼Cursor就會指向第一行資料(也就是下標為0的位置)。
所以,當cursor.moveToNext() 為假時將跳出迴圈,即 Cursor 資料迴圈完畢。
好吧,順便記記怎麼取資料吧:
當我們要取出cursor物件中的一個對應的資料,首先我們要先確定它的資料型別,用cursor.getxxx()。xxx代表的是你要取出的資料的資料型別,比如要取出的資料型別為String型別,那麼就可以用cursor.getString()。
然後我們確定了資料型別後,肯定要確定列名,所以我們要得到cursor物件中的列名,用cursor.getColumnIndex("列名")來獲得。
這樣的我們要的資料,就可以用cursor.getString(cursor.getColumnIndex("列名"))來獲得。
下面順便說說幾個常見的函式:
getCount() //返回結果集中的行數。
getColumnCount() //返回所有列的總數
isClosed() //如果為TRUE表示該遊標已關閉
close() //關閉遊標,且釋放資源
moveToLast() //移動游標到最後一行
moveToPrevious() //移動游標到上一行
getColumnName(columnIndex) //從給定的索引返回列名
moveToPosition(position) //移動游標到給定位置
相關文章
- Android學習筆記14-從原始碼分析Toast的建立過程Android筆記原始碼AST
- Android•Lottie動畫庫填坑記Android動畫
- 學習C過程中的筆記系列-2筆記
- 隨機過程學習筆記——概論隨機筆記
- SAP Commerce Cloud 的構建過程學習筆記Cloud筆記
- Flutter填坑筆記: dio報錯 FormatExceptionFlutter筆記ORMException
- Android 學習筆記雜記Android筆記
- Android學習筆記·ANRAndroid筆記
- Android學習筆記·HandlerAndroid筆記
- Android學習筆記·ADBAndroid筆記
- Android學習筆記一Android筆記
- Android SQLite學習筆記AndroidSQLite筆記
- Android Linker學習筆記Android筆記
- Android Studio學習筆記Android筆記
- 指標學習筆記指標筆記
- Date填坑記
- Elasticsearch 填坑記Elasticsearch
- 【填坑往事】Android手機鎖屏人臉解鎖優化過程實錄Android優化
- 「馬爾可夫決策過程」學習筆記馬爾可夫筆記
- 資料庫學習筆記——20 使用遊標資料庫筆記
- Taro開發小程式填坑筆記(一)筆記
- 隨機過程複習筆記隨機筆記
- 【CURSOR】Oracle 遊標 (cursor)知識梳理Oracle
- lua課程學習筆記筆記
- Android 學習筆記核心篇Android筆記
- Android Gradle 學習筆記整理AndroidGradle筆記
- Android 學習筆記思考篇Android筆記
- 2018.03.06 Android Handler學習筆記Android筆記
- Android 開發學習筆記Android筆記
- 達內課程學習筆記筆記
- 機器學習課程筆記機器學習筆記
- Android 學習筆記架構篇Android筆記架構
- React Native Android學習筆記 - 2015React NativeAndroid筆記
- 2018.03.16、Android-IntentService學習筆記AndroidIntent筆記
- Android環境搭建學習筆記Android筆記
- Android學習筆記(建立Menu,Intent的使用)Android筆記Intent
- Android學習筆記-Activity的啟動模式Android筆記模式
- minikube windows hyperx填坑記Windows