0

从数据库中获取数据时出现异常。我试图column index 1从这行代码中获取价值String ques=c.getString(1);

这是我调用数据库类并尝试获取数据库的代码,

try{
   c=db.getText(Integer.toString(subid));
   if(c==null)
    return;

    //if(c.getCount()> 0)
    //{
    //int max=c.getCount();
    //int min=0;

    Random rn = new Random();       
    int randomNum =  rn.nextInt(max-1) + rowid;
    c.moveToPosition(randomNum);

    String ques=c.getString(1);
    tv.setText(ques+" ");

    cans=c.getString(2);
    shuffleArray(ans);
    int[] a = new int[4];
    int j=0;
        for (int i = 0; i < ans.length; i++)
        {
          a[j]=ans[i];
          j++;
        }
     ans1=c.getString(a[0]);
     ans2=c.getString(a[1]);
     ans3=c.getString(a[2]);
     ans4=c.getString(a[3]);
     rb1.setText(ans1);
     rb2.setText(ans2);
     rb3.setText(ans3);
     rb4.setText(ans4);
    }

   catch(Exception e)
{
    Toast.makeText(getApplicationContext(), e.getMessage()+"exception", Toast.LENGTH_LONG).show();
}

我的数据库内容的快照,

在此处输入图像描述

这是我的数据库类,

public Cursor getText(String subId) throws SQLException //here it'll get all rows of subId=1 or whatever the value of subId
 {
  Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {
        KEY_id, KEY_ques, KEY_correctans, KEY_wrongans1,KEY_wrongans2, KEY_wrongans3}, 
        KEY_subjectid + "=" +  " '" + subId + "' " , null,null,null, null,null);
if (mCursor != null) 
{
    mCursor.moveToFirst();
}
return mCursor;

}

作为我上面的详细信息和代码,当它的值subId is 1从数据库中获取所有内容时subId 1没有任何异常但是当我传递的值subId=2然后它给出CursorIndexOutOfBound: Index 50 requested, with a size of 50异常并且当我通过时subId=3我得到Index 49 requested, with a size of 49 有什么问题在随机数生成器还是什么?

实际上我无法解决这里的问题。

我需要帮助。

提前致谢。

4

2 回答 2

0
Use space in query " = " actually your column name become "KEY_subjectid=" which is wrong 




 KEY_subjectid + " =" +  " '" + subId + "' " , null,null,null, null,null);
于 2013-10-03T07:17:42.743 回答
0

尝试以这种方式生成随机数:(我假设 c 是光标)

int randomNum =  rowid + (rn.nextInt() % (c.getCount() - rowid));

希望这可以帮助 :)

于 2013-10-03T07:13:45.720 回答