android sqlist中游标下标越界问题解决方案

在使用android的sqlist时,出现了以下错误

android.database.CursorIndexOutOfBoundsException: Index 14 requested, with a size of 14

经过排除,确定了错误位置

错误代码为

public ArrayList<receiveContext> query(String table_name,String[] arg)
	{
		SQLiteDatabase db=getWritableDatabase();
		Cursor c = db.query(table_name,null,poster+"=?",arg,null,null,updateTime,null);//查询并获得游标
		ArrayList<receiveContext> l=new ArrayList<receiveContext>();
		if(c.moveToFirst())
		{//判断游标是否为空
			
		    for(int i=0;i<c.getCount();i++){
		        c.moveToPosition(i);//正确语句
		        //c.move(i);  //错误语句
		        
		        String getContext="";
		        int getStyle = 0;
		        String getTime="";
		        
		        getContext= c.getString(c.getColumnIndex(context));
		        getStyle =c.getInt(c.getColumnIndex(style));
		        getTime = c.getString(c.getColumnIndex(updateTime));
		        receiveContext rc=new receiveContext(getContext,getStyle,getTime);
		        l.add(rc);
		    }
		}
		c.close();
		db.close();
		return l;
	}

这是我写的一个数据库查询的方法,越界原因是使用了方法c.move(i);这个方法我估计(有待考证)应该是当前指针+i,所以会导致越界。正确的方法应该是

c.moveToPosition(i);

这是跳到第i个位置。

本文出自 “万灵就是我” 博客,请务必保留此出处http://kinghacker.blog.51cto.com/7767090/1641208

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。