Я пытаюсь реализовать отношение FK от MySQL в JAVA с помощью JDBC. У меня есть список Garaz
объектов, и у каждого Garaz
есть список объектов Auto
(cars). У меня очень смешанные данные.Внедрение JDBC MYSQL FK
Мой MySQl DB это нормально, и я пытаюсь сделать это следующим образом:
public static ArrayList <Garaz> selectRecords() throws SQLException {
Connection dbConnection = null;
Statement statement = null;
String selectTableSQL = "SELECT Garaz.G_ID, Garaz.Nazwa, Garaz.Adres, Garaz.LiczbaMiejsc, Garaz.LiczbaPoziomow, " +
"Garaz.Czynny, Auta.A_Id, Auta.Model, Auta.Kolor, Auta.IloscDrzwi, Auta.Rejestracja\n" +
"FROM Garaz\n" +
"LEFT JOIN Auta\n" +
"ON Garaz.G_Id=Auta.G_Id\n" +
"ORDER BY Garaz.G_Id; ";
// ArrayList lista = new ArrayList <Garaz>();
try {
dbConnection = getDBConnection();
statement = dbConnection.createStatement();
System.out.println(selectTableSQL);
// execute select SQL stetement
ResultSet rs = statement.executeQuery(selectTableSQL);
while (rs.next()) {
int g_id = rs.getInt("G_ID");
String nazwa = rs.getString("NAZWA");
String adres = rs.getString("ADRES");
int lmiejsc = rs.getInt("LICZBAMIEJSC");
int lpoz = rs.getInt("LICZBAPOZIOMOW");
boolean czynny = rs.getBoolean("CZYNNY");
ArrayList lista2 = new ArrayList <Auto>();
int a_id = rs.getInt("A_Id");
String model = rs.getString("Model");
String kolor = rs.getString("Kolor");
int ildrzwi = rs.getInt("IloscDrzwi");
String rejestracja = rs.getString("Rejestracja");
Auto d = new Auto(a_id, model, kolor, ildrzwi, rejestracja);
if (a_id !=0){
lista2.add(d);
}
Garaz f = new Garaz(g_id, nazwa, lista2, adres, lmiejsc, lpoz, czynny);
lista.add(f);
//System.out.println("nazwa : " + nazwa);
//System.out.println("adres : " + adres);
// return lista;
}
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
if (statement != null) {
statement.close();
}
if (dbConnection != null) {
dbConnection.close();
}
}
return lista;
}
Я не понимаю, как читать из ResultSet rs
в том, что: ArrayList Garaz
содержит объекты (Garaz
) и каждый Garaz
объект содержит ArrayList Auto
. Поэтому у меня есть большая проблема с созданием 2 списков (один из них является частью другого), считывая данные с rs
(ResultSet
). У меня есть все Garaz
и все Auto
из таблиц DB, но отношение смешано. Мне нравится Garaz1
содержит случайные Auto
(cars).
Как создать 2 списка (один является частью другого), чтобы сохранить отношение Auto
является частью Garaz
на основе G_ID
?
Хорошо. это звучит как план :) Thnx за то, что помог мне, я попробую это сделать. – user2982527
Как насчет некоторых советов о создании объектов ArrayList для Auto, это часть объекта Garaz. Я знаю, к какому авто (автомобилю) относится Garaz на основе G_id в таблице Auta. – user2982527
Сделайте эту часть 'List' объекта Garaz' и просто добавьте автомобили, которые вы создаете из' ResultSet' (или что-то в этом роде, решение зависит о том, как вы хотите использовать результат). Я не хочу быть грубым, но я бы сказал, что возможность думать об этих решениях является частью основных навыков решения проблем, которые вам нужны в качестве разработчика. –