2016-04-06 1 views
0

私は、アレイ上の唯一のデータベースの1列を取得し、それをリターンSQLiteデータベースで5列のすべての行

public ArrayList<String> dbtoArr() { 
     ArrayList<String> arr = new ArrayList<>(); 
     SQLiteDatabase db = getReadableDatabase(); 
     String q = "SELECT * FROM persons WHERE 1"; 
     Cursor c = db.rawQuery(q, null); 
     c.moveToFirst(); 
     while (!c.isAfterLast()) { 
      if (c.getString(c.getColumnIndex("name")) != null) { 
       arr.add(c.getString(c.getColumnIndex("name"))); 
      } 
      c.moveToNext(); 
     } 
     db.close(); 
     return arr; 
    } 

を表示するには、次のコードを使用しますが、私はすべての列

のためのすべての行を取得したいです私はこの種のデータを運ぶことができるアンドロイドのオブジェクトを知りません

もし私がそれらを運ぶ方法を5つ以上の列があるとすれば?

ありがとうございます。

+1

のArrayListのは、あなたのように列を持つオブジェクトを作成できませんでしたでしょうにオブジェクトのArrayListを返しますか? – JamJar00

答えて

0

は、POJO(プレーン旧Javaのオブジェクト)クラスを作成し、あなたがカーソルを渡すと、その値で各プロパティを割り当てる方法を持っています。

このような何か:

class Person { 
    String name; 
    int age; 
    ... 
    public Person(Cursor c) { 
     name = c.getString(c.getColumnIndex("name")); 
     age = c.getInt(c.getColumnIndex("age"));   
     ... 
    } 
} 

そして、代わりに文字列のArrayListのを有するので、あなたは人

ArrayList<Person> persons = new ArrayList<>(); 
... 
while (!c.isAfterLast()) { 
    Person p = new Person(c); 
    persons.add(p); 
} 
+0

おかげさまで、このソリューションは非常に簡単でした。私はそれを完全に忘れています。 – Macnux

+0

私はうれしかったです。 – wm3ndez

0

メンバー変数がそれぞれの列に対応して宣言されたクラスを作成します。名前はMyClassとしましょう。 次に、データベースメソッドのメンバー変数に値を設定し、作成されたオブジェクトのリストを返す必要があります。あなたは何ができるか

public ArrayList<MyClass> dbtoArr() { 
     ArrayList<MyClass> arr = new ArrayList<>(); 
     SQLiteDatabase db = getReadableDatabase(); 
     String q = "SELECT * FROM persons WHERE 1"; 
     Cursor c = db.rawQuery(q, null); 
     c.moveToFirst(); 
     while (!c.isAfterLast()) { 
      if (c.getString(c.getColumnIndex("name")) != null) { 
       arr.add(new MyClass().setName(c.getString(c.getColumnIndex("name")))); 
      } 
      c.moveToNext(); 
     } 
     db.close(); 
     return arr; 
    } 
+0

大変感謝しています。 – Macnux

関連する問題