@altyn

Как сохранить ArrayList в MySQL Java?

В ходе работы столкнулся с проблемой сохранения нескольких значений-ключа в одной ячейке.
Например, у студента в БД есть колонка "группы", туда надо записать 5-6 id-ключа. Как туда записать значения из ArrayList в Java? Может я неправильно пытаюсь сделать. Я делаю так: Беру из ArrayList из значений делаю String едиственный, это при Insert. А при Read по "," разделяю на отдельные строки. Как вы это реализуете, подскажите пожалуйста? Заранее спасибо!
  • Вопрос задан
  • 3443 просмотра
Пригласить эксперта
Ответы на вопрос 3
LeEnot
@LeEnot
Енот-андроид
Вам нужно завести отдельную таблицу для групп, в которой будет 2 столбца: id студента и id группы. Т.е. в таблице будет по строке на каждую группу студента.
Ответ написан
@Billy_Milligan
Если правильно, то одно поле для одного объекта. Обычно не засовывают в одно поле несколько id. Вам нужна 2 таблица с полями: id студента и id группы.

table: student_group
+-------------+-----------+
|  student_id | group_id  |
+-------------+-----------+
|      1      |     4     |
+-------------+-----------+
|      1      |     5     |
+-------------+-----------+
|      1      |     10    |
+-------------+-----------+
|      1      |     99    |
+-------------+-----------+
|      2      |      8    |
+-------------+-----------+
|      2      |     30    |
+-------------+-----------+
Ответ написан
@nagibator8000
Вам стоит почитать про связи в бд "один к одному", "один ко многим", "многие ко многим".
Если студент может состоять в нескольких группах, а в группе могут быть разные студенты, то эта связь называется "многие ко многим". В таком случае обычно создается 3 таблицы. 1 - студенты (students), 2 - группы(groups) и 3 это вспомогательная таблица из двух колонок - id студента и id группы (student_group).
например запрос на выборку групп, в которых состоит студент:
select * from  groups where group_id in (select group_id from student_group where student_id = ид_студента);

Для добавления связей просто добавляешь запись в 3 таблицу, например:
insert into student_group (student_id, group_id) values (ид_студента, ид_группы)

Для множественного добавления групп в jdbc есть batch insert, например так:
String sql = "insert into student_group (student_id, group_id) values (?, ?)";
Connection connection = new getConnection();
PreparedStatement ps = connection.prepareStatement(sql);
String student_id = "Какойто_ид_студента";
ArrayList<String> groups = // это твой лист с группами
 
for (Student group : groups) {
    ps.setString(1, student_id);
    ps.setString(2, group);
    ps.addBatch();
}
ps.executeBatch();
ps.close();
connection.close();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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