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 に答える