溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

android sqlist中游標(biāo)下標(biāo)越界問題解決方案

發(fā)布時間:2020-08-10 21:36:02 來源:網(wǎng)絡(luò) 閱讀:787 作者:King靈 欄目:移動開發(fā)

在使用android的sqlist時,出現(xiàn)了以下錯誤

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

經(jīng)過排除,確定了錯誤位置

錯誤代碼為

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);//查詢并獲得游標(biāo)
		ArrayList<receiveContext> l=new ArrayList<receiveContext>();
		if(c.moveToFirst())
		{//判斷游標(biāo)是否為空
			
		    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;
	}

這是我寫的一個數(shù)據(jù)庫查詢的方法,越界原因是使用了方法c.move(i);這個方法我估計(有待考證)應(yīng)該是當(dāng)前指針+i,所以會導(dǎo)致越界。正確的方法應(yīng)該是

c.moveToPosition(i);

這是跳到第i個位置。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI