Пишу свой домашний проект паралельно обучению. Использую JDBC для работы с MySQL. Надо вытаскивать много данных с разными условиями. Вот сваял зачем то надстройку(обертку) для доступа из других объектов, что бы инкапсулировать работу JDBC.
public ArrayList<HashMap<String,String>> select(String query){
Connection conn=SqlConnector.getConnection().connection;
ArrayList <HashMap<String,String>> arr=new ArrayList<>();
Statement stmt=null;
ResultSet rs=null;
try {
stmt=conn.createStatement();
rs=stmt.executeQuery(query);
ResultSetMetaData rsmd=rs.getMetaData();
while (rs.next()){
HashMap<String,String> map=new HashMap<>();
for (int i = 1; i<rsmd.getColumnCount();i++){
map.put(rsmd.getColumnName(i),rs.getString(i));
}
arr.add(map);
}
} catch (SQLException e) {
log.fatal("Эксепшен запроса",e);
}
finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
log.fatal("Эксепшен закрытия",e);
}
}
return arr;
}
и вариант использования этого метода:
Query qm=new Query();
ArrayList<HashMap<String,String>> arr=qm.select("SELECT * FROM users");
ArrayList<User> users=new ArrayList<>();
for (HashMap<String,String> map: arr) {
User tUser = new User(map.get("name"), Integer.parseInt(map.get("id")), Status.parseStatus(map.get("status")), null);
System.out.println(tUser);
users.add(tUser);
}
return users;
Плохо так делать? В базе только String и int, ну и Date.
Это мой первый проект и со всем сталкиваюсь впервые. Прошу тапочками не бить))
ResultSet
фактически является отражением т.н. курсора - Cursor, по сути он очень экономно расходует ресурсы, обычно он реализуется так, что хранит в памяти только несколько записей, все остальные данные хранятся в БД, откуда по мере необходимости он подкачивает данные. Если записей много - допустим 100 миллионов, то никакой памяти не хватит.
В общем делать так как вы сделали делать не стоит, ну разве что заранее известно, что записей немного.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется проект hibernate + javafxПодскажите пожалуйста, как добавить базу данных(sqlite) в jar файл или, если я хочу отдельным файлом, то где прописать...
Имеется база с полями id, sdel, podtv Нужно вывести поля где и sdel!=1 и podtv!=1Если я пишу запрос через AND