我想将一些来自Sql数据库的数据放在一个数组中

这是我的数组代码:

openDB();
Cursor c = myDb.getSpalte();
while (!c.isAfterLast())
     {
         s1nInt[i]  = c.getInt(1);
         i++;
         c.moveToNext();
     }
c.close();
closeDB();


这是我getSpalte();方法的代码:

public Cursor getSpalte()
{
    String where= null;
    Cursor c =  db.query(true, DATABASE_TABLE, KEY_KALOA,
            where, null, null, null, null, null);
    if (c != null)
    {
      c.moveToFirst();
    }
  return c;
}


如果运行此命令,则会得到以下异常:

06-27 13:34:01.021: E/CursorWindow(24334): Failed to read row 0, column 1 from a CursorWindow which has 1 rows, 1 columns.


现在我为这些命令得到了一个例外:

  Number[] series2Numbers = {/*s1nInt[i-6],s1nInt[i-5],s1nInt[i-4],s1nInt[i-3],s1nInt[i-   2],s1nInt[i-1],*/s1nInt[i]};


这是我的例外情况:

Graph.onStart() line: 75
Graph(Fragment).performStart() line: 1801
FragmentManagerImpl.moveToState(Fragment, int, int, int, boolean) line: 937
FragmentManagerImpl.moveToState(int, int, int, boolean) line: 1106
BackStackRecord.run() line: 690
FragmentManagerImpl.execPendingActions() line: 1571
FragmentManagerImpl$1.run() line: 447
Handler.handleCallback(Message) line: 733

最佳答案

游标从0开始,必须先移至第一行才能访问数据:

     while(c.moveToNext())
     {
         s1nInt[i]  = c.getInt(1);
         i++;
     }

08-25 12:09
查看更多