我試圖使用JDBC將MySQL中的FK關係實現到JAVA中。我有一個Garaz
對象的列表,每個Garaz
都有一個Auto
(汽車)對象的列表。我有很混雜的數據。JDBC MYSQL FK實現
我的MySQL數據庫是好的,我嘗試做這樣的:
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
。所以我通過從rs
(ResultSet
)讀取數據來創建2個列表(一個是另一個列表的一部分)時遇到大問題。我從數據庫表中獲得了全部Garaz
和全部Auto
,但關係是混合的。像Garaz1
包含隨機Auto
(汽車)。
如何創建2個列表(一個是另一個的一部分)以保持關係Auto
是Garaz
的一部分,基於G_ID
?
好的。這聽起來像一個計劃:) thnx幫助我,我會嘗試這個evning。 – user2982527
有關創建AutoList的ArrayList的一些技巧,這是Garaz對象的一部分。我知道哪個汽車(汽車)根據G_id在Auta表中去到哪個Garaz – user2982527
將'Garaz'對象的'List'部分做成這樣,並且簡單地添加你從ResultSet創建的汽車(或者類似的東西,解決方案取決於如何使用結果)。我不想粗魯,但我會說,能夠想到這些解決方案是您作爲開發人員需要的基本解決問題技能的一部分。 –