0

我正在尝试将 sqlite 表加载为 arraylist,以便我可以使用其中的数据。我不太确定 sqlite 查询,但我已经建立了一个类来按原样操作字符串,这是我更喜欢的。我可以加载单个行,但我不确定如何将整个表作为数组列表。

我的主要方法中有以下方法

public void ShowCNData()
{
    TestAdapter mDbHelper = new TestAdapter(this);         
    mDbHelper.createDatabase();       
    mDbHelper.open();

            String allData = mDbHelper.getCYData().get(1)[1];

    thing.setText(allData);

    mDbHelper.close();
}

以及我的 dbAdapter/Helper 类中的以下方法

 public ArrayList<String[]> getCYData() 
 { 
     ArrayList<String[]> CYData = new ArrayList<String[]>();
     try 
     { 
         String sql ="SELECT * FROM cnYears "; 
         Cursor mCur = null;
         do
         {
             mCur = mDb.rawQuery(sql, null);
             CYData.add(new String[] {mCur.getString(0),mCur.getString(1),mCur.getString(2),mCur.getString(3),mCur.getString(4)});
         }
         while (mCur.moveToNext());

         return CYData; 
     } 
     catch (SQLException mSQLException)  
     { 
         Log.e(TAG, "getTestData >>"+ mSQLException.toString()); 
         throw mSQLException; 
     } 
 }

如何将数据加载到我的 ArrayList 中?

4

1 回答 1

0

如果没有实际的日志信息,我猜你的 NullPointerException 会在你得到一个空游标时发生。试试这种方式:

//initialize arraylist, execute query etc.

if (cursor.moveToFirst()) {
    do {
        String[] entry = new String[dataSize];

        //pull your data here
        data[0] = cursor.getInt(0);
        data[1] = cursor.getString(1);
        //...

        list.add(entry);
    } while (cursor.moveToNext());
}

// return arraylist
于 2013-09-15T18:40:57.830 回答