Выберите данные из SQLite в ListArrays - PullRequest
0 голосов
/ 27 июля 2011

Я ломал голову над этим уже несколько дней и просто не могу обернуться, используя базы данных SQLite в Android / Java. Я пытаюсь выбрать две строки из базы данных SQLite в ListArray (или две, по одной для каждой строки. Не уверен, будет ли это лучше или хуже), и я просто не понимаю, как это сделать. Я пробовал различные классы менеджера баз данных, которые нашел, но ни один из них не делает то, что мне нужно, и мне кажется, что я смогу выполнить эту простую задачу без дополнительных функций, которые я видел в других менеджерах баз данных. Есть ли простой способ просто запросить некоторые данные из существующей базы данных SQLite и поместить их в ListArray, чтобы я мог работать с ними? Я понимаю, что мне нужно скопировать базу данных из ресурсов в путь базы данных Android, и я могу справиться с этой частью. Мне также нужно иметь возможность изменить один из столбцов в строке. Мне не нужно создавать базы данных или таблицы или строки. Я умоляю кого-то помочь мне в этом, поскольку считаю, что любой написанный мной код (скопированный из Интернета) совершенно бесполезен.

1 Ответ

1 голос
/ 27 июля 2011

Вы можете создать такой метод:

private List<MyItem> getAllItems()
    List<MyItem> itemsList = new ArrayList<MyItem>();
    Cursor cursor = null;
    try {
        //get all rows
        cursor = mDatabase.query(MY_TABLE, null, null, null, null,
                null, null);
        if (cursor.moveToFirst()) {
            do {
                MyItem c = new MyItem();
                c.setId(cursor.getInt(ID_COLUMN));
                c.setName(cursor.getString(NAME_COLUMN));
                itemsList.add(c);
            } while (cursor.moveToNext());
        }
    } catch (SQLiteException e) {
        e.printStackTrace();
    } finally {
        cursor.close();
    }
    return itemsList;
}

Это будет внутри вашего класса, скажем, MyDatabaseHelper, где вы также должны будете объявить:

private static class DatabaseHelper extends SQLiteOpenHelper{

    private final static String DATABASE_CREATE="create table " + MY_TABLE + " (id integer primary key, country string);";

    public DatabaseHelper(Context context,String name, CursorFactory factory, int version){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db){
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, 
                          int newVersion){
        Log.w(TAG, "Upgrading database from version " + oldVersion 
              + " to "
              + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS "+ MY_TABLE);
        onCreate(db);
    }
}    

используется для open() и close() базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...