Как из бд достать данные в HashMap?

Всем привет, столкнулся с проблемой, не знаю как заполнить список данными полученными из бд...

Точнее знаю что есть куча адаптеров работающих с Cursor, но для меня сейчас это слегка трудновато, как можно достать из бд данные в HashMap?

И там уже буду работать с простым ArrayAdapter..

Или все таки это очень важно и стоит зубрить эти Cursor Adapters ?
  • Вопрос задан
  • 1007 просмотров
Решения вопроса 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Подкину парочку статей древнющих, они помогут:
www.javable.com/columns/jdbc/workshop/01
www.javable.com/javaworld/tips/82_tt

Ну а вообще-то лучше сразу смотреть в сторону hibernate и spring.
Можно еще и на blog.mybatis.org (бывший iBatis) посмотреть. Он достаточно простой.
Ответ написан
@coden55
Использую для себя 3 метода, на вход берут результат запроса к бд:
1. Таблицу в ArrayList с Hashmap (что вам надо)
2. Первую колонку в ArrayList
3. Первую строку в HashMap

Под android надо немного переписать их.

private ArrayList<HashMap<String, Object>> resultSetToArrayList(ResultSet rs) throws SQLException {
        ResultSetMetaData md = rs.getMetaData();
        int columns = md.getColumnCount();
        ArrayList<HashMap<String, Object>> list = new ArrayList<>();
        while (rs.next()) {
            HashMap<String, Object> row = new HashMap<>(columns);
            for (int i = 1; i <= columns; ++i) {
                row.put(md.getColumnName(i), rs.getObject(i));
            }
            list.add(row);
        }
        return list;
    }

    private ArrayList<Object> resultSetGetColToArrayList(ResultSet rs) throws SQLException {
        ArrayList<Object> list = new ArrayList<>();
        while (rs.next()) {
            list.add(rs.getObject(1));
        }
        return list;
    }

    private HashMap<String, Object> resultSetGetRowToHashmap(ResultSet rs) throws SQLException {
        ResultSetMetaData md = rs.getMetaData();
        int columns = md.getColumnCount();
        HashMap<String, Object> row = new HashMap<>(columns);
        if (rs.next()) {
            for (int i = 1; i <= columns; ++i) {
                row.put(md.getColumnName(i), rs.getObject(i));
            }
        }
        return row;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы