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) //移動游標到給定位置
相關文章
- Oracle學習筆記整理之遊標篇Oracle筆記
- 資料庫學習筆記——20 使用遊標資料庫筆記
- SQL 遊標cursorSQL
- 學習C過程中的筆記系列-2筆記
- Android•Lottie動畫庫填坑記Android動畫
- 【CURSOR】Oracle 遊標 (cursor)知識梳理Oracle
- 隨機過程學習筆記——概論隨機筆記
- 學習筆記 過程、同義詞、序列筆記
- Android學習筆記14-從原始碼分析Toast的建立過程Android筆記原始碼AST
- 儲存過程——遊標儲存過程
- MySQL過程和遊標MySql
- SQL 遊標cursor的運用SQL
- Flutter填坑筆記: dio報錯 FormatExceptionFlutter筆記ORMException
- PL/SQL 04 遊標 cursorSQL
- 指標學習筆記指標筆記
- Elasticsearch 填坑記Elasticsearch
- React 填“坑”記React
- Date填坑記
- 「馬爾可夫決策過程」學習筆記馬爾可夫筆記
- Taro開發小程式填坑筆記(一)筆記
- SAP Commerce Cloud 的構建過程學習筆記Cloud筆記
- 【筆記】遊標變數筆記變數
- oracle pl/sql儲存過程內外層遊標cursor巢狀引數化示例OracleSQL儲存過程巢狀
- Oracle使用cursor for隱式遊標Oracle
- PLSQL 呼叫 返回 遊標(Cursor)PROCEDURESQL
- 隨機過程複習筆記隨機筆記
- gevent 學習筆記 —— 協程筆記
- lua課程學習筆記筆記
- perl學習筆記---標量筆記
- iOS指標學習筆記iOS指標筆記
- oracle cursor遊標迴圈比較遊標元素是否相同Oracle
- Android 學習筆記雜記Android筆記
- JSP標記學習筆記 (轉)JS筆記
- 《Undo, Redo, DataFile看Oracle中的事務過程》學習筆記Oracle筆記
- 阿熊的 Caddy+Hugo+Acme.sh 配置填坑筆記GoACM筆記
- Android學習筆記·ANRAndroid筆記
- Android學習筆記·HandlerAndroid筆記
- Android SQLite學習筆記AndroidSQLite筆記