【解决】android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 0
android 中数据库处理,特别是使用cursor时,注意初始位置,好像是从下标为-1的地方开始的,也就是说一次查询中,返回给cursor查询结果时,不能够马上从cursor中提取值。
比如,下面的代码会返回错误,android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 0:
int score = ((Cursor)getReadableDatabase().query(TABLE_NAME, new String[]{"learned"},
"_id=?", new String[]{""+id}, null, null, null,"1")).getInt(0);
正确的用法:
Cursor cursor = getReadableDatabase().query(TABLE_NAME, new String[]{"learned"}, "_id=?",
new String[]{""+id}, null, null, null,"1");
int learned=0;
if(cursor.moveToFirst()){
score= cursor.getInt(0);
}
cursor.close();
[解决] Caused by: java.lang.IllegalStateException: get field slot from row 0 col -1 failed
原因有可能如下:
1,检查查询的字段名是否写错
2, 检查游标是否查询出你所需要的字段
今天将用到的TextView显示图片内容的方法整理出来,方便以后使用。
假设TextView所要显示的字串变量为:message
1.初始化 SpannableString msp = new SpannableString(message);
2.获取"["的位置s,获取对应的"]"的位置为e
ImageSpan span = new ImageSpan(mContext,
mEmotions.get(i).getBitmap(), //图片
ImageSpan.ALIGN_BASELINE);
msp.setSpan(span, s, e + 1,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//设置从s到e位置的字串转化为相应的图片
3.view.setText(msp);
其他:
设置字体颜色的方法:
msp.setSpan(new ForegroundColorSpan(Color.BLUE), s, e, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
设置下划线的方法:
msp.setSpan(new UnderlineSpan(), s, e,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
设置粗体:
msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), s, e, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
1. 部署了个DEMO,结果出错,查了下原因:用了一个commons-validator的组件,而这个组件包含了一个xml-apis的包,删掉就OK了。
2. 连接mysql:
url为jdbc:mysql://w.rdc.sae.sina.com.cn:3307/app_你的应用名称(2级域名的那个)
user为access key
password为secret key (汇总信息栏中寻找)
3.DBCP数据库连接池配置如下:
<property name="maxWait" value="1000" />
<property name="initialSize" value="5" />
<property name="maxActive" value="20" />
<property name="maxIdle" value="5" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="15000" />
<property name="numTestsPerEvictionRun" value="20" />
<property name="validationQuery" value="SELECT 1 FROM DUAL" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="180" />
平时就配置这几个参数,竟然报错:
initialSize=1
maxActive=100
maxIdle=8
minIdle=1
这个有空研究下。