2016-04-06 2 views
0

Я использую следующий код, чтобы получить один столбец только базы данных на массиве и отобразить еговозвращает все строки для 5 столбцов в базе данных SQlite

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 объектов? – JamJar00

ответ

0

Что вы можете сделать, это создать POJO (Plain Old Java Object) класс, и есть метод, где вы проходите в Cursor и присвоить каждое свойство с его значением.

Что-то вроде этого:

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

И тогда, вместо того, чтобы в ArrayList цепочек, вы будете иметь ArrayList лиц

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

oh спасибо, я потерял рассудок, это решение было очень легким, я полностью забыл об этом – 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

Смежные вопросы