Cursor源码梳理

来源:互联网 发布:倩女幽魂手游 mac登陆 编辑:程序博客网 时间:2024/05/17 23:46

接口类,提供对数据库查询返回结果集的随机读写访问。


getType方法返回值

    static final int FIELD_TYPE_NULL = 0;//如果指定的列是null,返回该值    static final int FIELD_TYPE_INTEGER = 1;//如果指定的列的属性是integer类型,返回该值    static final int FIELD_TYPE_FLOAT = 2;//如果指定的列的属性是float类型,返回该值    static final int FIELD_TYPE_STRING = 3;//如果指定的列的属性是String类型,返回该值    static final int FIELD_TYPE_BLOB = 4;//如果指定的列的属性是blob类型,返回该值

int getCount();//返回结果集中的行数,即结果数量


返回当前游标在结果集中的位置,默认值是0,游标默认停在-1的位置,当调用next()方法的时候,游标向下一行移动,最后一行的位置是count()

int getPosition();

光标相对当前位置向前或向后移动。offset正值向前移动,offset负值向后移动,移动的行数就是offset的绝对值。如果最后的位置超出了范围,将会固定在-1的位置或者count()的位置,如果向前移动超出范围,固定停在-1的位置,就是第一行的前面,如果向后移动超出范围,停在count()位置。如果最后停在这两个位置上,该方法就会返回false,其余返回true。

boolean move(int offset);


将光标移动到结果集指定位置。光标移动范围是[-1,count()],但是position最小值是0。返回值的逻辑和move方法一样。
boolean moveToPosition(int position);


光标移动到第一行的位置,如果光标/结果集是空的,则返回false,其余返回true。
 boolean moveToFirst();


移动光标到最后一行的位置。
boolean moveToLast();


移动光标至下一行。如果光标超过了结果集中的最后一行,将返回false,否则返回true
boolean moveToLast();

移动光标至上一行。如果移动之后光标超出结果集的第一行,返回false。
boolean moveToPrevious();


返回当前光标是否固定在结果集的第一行。
 boolean isFirst();


返回当前光标是否固定在结果集的最后一行。

boolean isLast();


返回当前光标是否停在结果集第一行的前面一行
boolean isBeforeFirst();

返回当前光标是否停在结果集最后一行的后面。
 boolean isAfterLast();


返回指定列名在结果集中的索引,从0开始,如果列名不存在,返回-1,
int getColumnIndex(String columnName);

返回指定列名在结果集中的索引,从0开始,如果列明不存在,抛出异常信息

int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException;

通过指定索引值返回对应的列名。索引值从0开始

String getColumnName(int columnIndex);

得到结果集中所有列名的String数组。

 String[] getColumnNames();

返回结果集中的列数

int getColumnCount();


返回结果集中指定索引值的列的值,以字节数组类型存储结果。
byte[] getBlob(int columnIndex);

返回结果集中指定索引值的列值,以String类型存储结果。

String getString(int columnIndex);

将结果集中指定索引的列的值存入buffer中,如果结果是空,直接返回buffer。索引值从0开始

void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer);


返回结果集中指定索引值的列的值,以short形式返回,调用此方法。注意short类型取值范围是-32768~32767。如果对应的列的值是空或者索引值的类型不是int或者获得的值超出short范围,将抛出异常。

 short getShort(int columnIndex);

以int形式返回搜索的列的值。注意int值范围

int getInt(int columnIndex);


以long形式返回检索的列的值,注意long值范围
long getLong(int columnIndex);

以float形式范围检索的列的值,注意float值范围。

float getFloat(int columnIndex);

以double类型范围检索的列的值,注意double取值范围

double getDouble(int columnIndex);

返回检索的列的数据类型。

 int getType(int columnIndex);

判断指定列的值是否为空

 boolean isNull(int columnIndex);

关闭光标,释放资源的引用。

 void close();

判断光标是否关闭

boolean isClosed();



void registerDataSetObserver(DataSetObserver observer);



总结:

严格意义上来说,sqlite没有数据类型,sqlite是使用动态数据类型, 数据的类型取决于数据本身而不是字段。

sqlite常用的数据类型:

NULL: 这个值为空值


VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。


CHAR(n):长度固定为n的字串,n不能超过 254。


INTEGER: 值被标识为整数


REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.


TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).


BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改  变格式。


DATA :包含了 年份、月份、日期。


TIME: 包含了 小时、分钟、秒。












0 0
原创粉丝点击