美文网首页
Android Cursor(光标)解析

Android Cursor(光标)解析

作者: 浅_若清风 | 来源:发表于2021-07-07 09:12 被阅读0次

    SQLiteDatabase db = dataBaseHelper.getWritableDatabase();
    Cursor cursor = db.rawQuery("select *from User",null);
    1.光标的行数:int getCount()

    int rows = cursor.getCount();
    

    2.当前光标的位置:int getPosition()
    返回的值从零开始, 当第一次返回行集时游标将位于位置 -1,即第一行之前。在返回最后一行之后,对 next() 的另一个调用将使光标离开最后一个条目,位于 count() 的位置。

    int position = cursor.getPosition();
    

    3.从当前位置应用的偏移量:boolean move(int offset)
    将光标从当前位置向前或向后移动一个相对量。 正偏移向前移动,负偏移向后移动。 如果最终位置在结果集的边界之外,则结果位置将分别固定为 -1 或 count(),具体取决于该值是在集合的前端还是末尾。如果请求的目的地可达,此方法将返回 true,否则返回 false。

    cursor.move(offset)
    

    4.将光标移动到绝对位置:boolean moveToPosition(int position)
    值的有效范围是 -1 <= 位置 <= 计数。如果请求目的地可达,此方法将返回 true,否则返回 false。

    cursor. moveToPosition(position)
    

    5.将光标移动到第一行:boolean moveToFirst()

    cursor.moveToFirst()
    

    6.将光标移动到最后一行:boolean moveToLast()

    cursor.moveToLast()
    

    7.将光标移动到下一行:boolean moveToNext()

    cursor.moveToNext()
    

    8.将光标移动到上一行:boolean moveToPrevious()

    cursor.moveToPrevious()
    

    9.返回光标是否指向第一行:boolean isFirst()

    cursor.isFirst()
    

    10.返回光标是否指向最后一行:boolean isLast()

    cursor.isLast()
    

    11.返回光标是否指向第一行之前的位置:boolean isBeforeFirst()

    cursor.isBeforeFirst()
    

    12.返回光标是否指向最后一行之后的位置:boolean isAfterLast()

    cursor.isAfterLast()
    

    13.给定列名的从零开始的列索引,如果列名不存在,则返回 -1:int getColumnIndex(String columnName)

    cursor.getColumnIndex("columnName")
    

    14.给定列名的从零开始的索引,如果该列不存在则抛出非法参数异常:int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException

    cursor.getColumnIndexOrThrow("columnName")
    

    15.给定的从零开始的列索引处的列名:String getColumnName(int columnIndex)

    cursor.getColumnName(columnIndex)
    

    16.返回一个字符串数组,其中按列在结果中的顺序保存结果集中所有列的名称。:String[] getColumnNames()

    cursor.getColumnNames()
    

    17.返回总列数:int getColumnCount()

    cursor.getColumnCount()
    

    18.各类型返回值
    (1)以字节数组的形式返回请求列的值:byte[] getBlob(int columnIndex)
    (2)以字符串形式返回请求列的值:String getString(int columnIndex)
    (3)以整数形式返回请求列的值:int getInt(int columnIndex)
    (4)以 long 形式返回请求列的值:long getLong(int columnIndex)
    (5)以浮点数形式返回请求列的值:float getFloat(int columnIndex)
    (6)以双精度形式返回请求列的值:double getDouble(int columnIndex)
    (7)返回给定列值的数据类型:int getType(int columnIndex)
    (8)列值是否为空:boolean isNull(int columnIndex)
    (9)以短形式返回请求列的值:short getShort(int columnIndex)

    //getBlob
    byte[] a = cursor.getBlob(cursor.getColumnIndex("xxx"));
    //getString
    String b = cursor.getString(cursor.getColumnIndex("xxx"));
    //getInt
    int c = cursor.getInt(cursor.getColumnIndex("xxx"));
    //getLong
    long d = cursor.getLong(cursor.getColumnIndex("xxx"));
    //getFloat
    float e = cursor.getFloat(cursor.getColumnIndex("xxx"));
    //getDouble
    double f = cursor.getDouble(cursor.getColumnIndex("xxx"));
    //getType
    int g = cursor.getType(cursor.getColumnIndex("xxx"));
    //isNull
    boolean h = cursor.isNull(cursor.getColumnIndex("xxx"));
    //getShort
    short i = cursor.getShort(cursor.getColumnIndex("xxx"));
    

    19.检索请求的列文本并将其存储在提供的缓冲区中:void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)

    cursor.copyStringToBuffer(columnIndex,buffer);
    

    20.关闭游标:void close()

    cursor.close();
    

    21.游标是否关闭:boolean isClosed()

    cursor.isClosed()
    

    22.注册一个观察者,当支持此游标的内容发生变化时调用该观察者:void registerContentObserver(ContentObserver observer)

    cursor.registerContentObserver(observer);
    

    23.销毁注册的观察者:void unregisterContentObserver(ContentObserver observer)

    cursor.unregisterContentObserver(observer);
    

    24.注册一个观察者,当数据集的内容发生变化时被调用:void registerDataSetObserver(DataSetObserver observer)

    cursor.registerDataSetObserver(observer);
    

    25.销毁注册的观察者:void unregisterDataSetObserver(DataSetObserver observer)

    cursor. unregisterDataSetObserver(observer);
    

    26.注册以查看内容 URI 的更改。这可以是特定数据行的 URI,也可以是内容类型的通用URI:void setNotificationUri(ContentResolver cr, Uri uri)

    cursor.setNotificationUri(cr, uri);
    

    cr是上下文,uri是需要观看的内容
    27.是否所有光标移动都应导致调用 onMove():boolean getWantsAllOnMoveCalls()

    cursor.getWantsAllOnMoveCalls();
    

    只有在此方法返回 true 时,才会跨进程调用 onMove()
    28.返回一组额外的值:Bundle getExtras()

    cursor.getExtras();
    

    29.光标用户与光标通信的带外方式:Bundle respond(Bundle extras)
    30.设置 Bundle 返回的getExtras():void setExtras(Bundle extras)

    相关文章

      网友评论

          本文标题:Android Cursor(光标)解析

          本文链接:https://www.haomeiwen.com/subject/ifuiultx.html