Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Da hast du es doch schon geschrieben. Du übergibst der Methode den Parameter name, also den NAmen der gesuchten Stadt. Diese Stringvariable setzt du dann in der SQL-Abfrage ein ("WHERE name = " + name).
Ich glaube, du hast das mit der for-Schleife noch nicht richtig verstanden.
Java:
for (City city : ArrayList<City>)
Das bedeutet, du hast eine Liste, in der sich City-Objekte befinden --> z.B. ArrayList<City> cityListe
Mit der for-Schleife gehst du diese Liste durch und bekommst dann in jedem Schleifendurchlauf das fortlaufende City-Objekt (City city) geliefert, auf das du dann in der Schleife zugreifen kannst.
Dein Problem ist jetzt, dass du in deiner Methode keine Liste erzeugst, sondern nur 1 City-Objekt, welches deine Methode als Rückgabewert hat. Es kommt also keine Liste sondern ein City-Objekt zurück.
Java:
City stuttgart= e.findCityByName("Stuttgart");
System.out.println(stuttgart.toString());
Ich glaube, du hast das mit der for-Schleife noch nicht richtig verstanden.
Java:
for (City city : ArrayList<City>)
Das bedeutet, du hast eine Liste, in der sich City-Objekte befinden --> z.B. ArrayList<City> cityListe
Mit der for-Schleife gehst du diese Liste durch und bekommst dann in jedem Schleifendurchlauf das fortlaufende City-Objekt (City city) geliefert, auf das du dann in der Schleife zugreifen kannst.
Dein Problem ist jetzt, dass du in deiner Methode keine Liste erzeugst, sondern nur 1 City-Objekt, welches deine Methode als Rückgabewert hat. Es kommt also keine Liste sondern ein City-Objekt zurück.
Java:
City stuttgart= e.findCityByName("Stuttgart");
System.out.println(stuttgart.toString());
Das Problem ist, dass ich mich erst seit kurzer zeit mit Java beschäftige, es aber so schnell es geht lernen muss um das Studentenniveau zu erreichen, Gründe dafür seien dahinter gestellt.
Ich habe jeden Tag 10h Zeit Java zu lernen, und da ist grade einfach soviel Info im Kopf dass er schon fast platzt.
Die Datenbanken waren jetzt schon ein ziemlich fortgeschrittenes Thema, habe mich zuvor mit anderen Sachen beschäftigt, mit GUI's etc.
Tut mir leid wenn euch das nerven gekostet hat, aber am Anfang geht das noch nicht so schnell. Beschäftige mich erst ein paar Wochen mit java..
Trotzdem danke dass ihr euch die Zeit genommen habt!
Gruß & einen schönen Abend noch
p.s. wenn ihr gute Tutorials kennt (Videostreams) oder Andere Seiten(bitte kein galileo openbook) wäre es nett, wenn ihr mir diese per pn zuschicken könntet.
ist so auch noch nicht richtig.
Was machst du, wenn es mehrere Datensätze mit "Stuttgart" als Name in der DB gibt? Du solltest
Code:
City d = new City();
ganz oben in die Methode verschieben und nicht in der Schleife das Objekt erzeugen. Und dann unten (nach close) nicht null sondern das Objekt d zurückgeben.
ist so auch noch nicht richtig.
Was machst du, wenn es mehrere Datensätze mit "Stuttgart" als Name in der DB gibt? Du solltest
Code:
City d = new City();
ganz oben in die Methode verschieben und nicht in der Schleife das Objekt erzeugen. Und dann unten (nach close) nicht null sondern das Objekt d zurückgeben.
Ja (bzw. das return d ganz zum Schluss), weil ein return einen Wert zurückgibt und dann der Rest der Methode nicht mehr weiter ausgeführt wird.
Nicht aufgeben! Java ist nicht ganz einfach. Man sollte auf jeden Fall besonders zum Beginn mal einen Blick in Bücher werfen und die Grundlagen (Klassen, Objekte, Methoden...) lernen.
Ja (bzw. das return d ganz zum Schluss), weil ein return einen Wert zurückgibt und dann der Rest der Methode nicht mehr weiter ausgeführt wird.
Nicht aufgeben! Java ist nicht ganz einfach. Man sollte auf jeden Fall besonders zum Beginn mal einen Blick in Bücher werfen und die Grundlagen (Klassen, Objekte, Methoden...) lernen.
Hab ich nicht vor Werde bestimmt noch öfters was in dem Forum fragen, war ja klasse wie schnell mir geholfen wurde!
Habe schon 2 Bücher (Eddison Wesley verlag und das andere java von kopf bis fuß) relativ weiter durchgemacht, nur mich hat das bei JDBC alles ein bisschen verwirrt.. am besten erstmal ne Nacht drüber schlafen. Also vielen Dank dir nochmal!
Ja, eine Nacht drüber schlafen hat mir auch schon manchmal geholfen... ;-) Aber wie auch schon gesagt: einige deiner Probleme hatten nichts direkt mit JDBC zu tun, sondern waren grundsätzliche Fehler. Es ist halt auch schwer, gleich mit JDBC anzufangen, wenn zum Teil noch Java-Grundlagen fehlen. Also, speziell wie Klassen, Objekte und Methoden strukturiert sind und funktionieren. Oder das Arbeiten mit Collections. Das solltest du dir auf jeden Fall noch aneignen, dann klappt es auch mit JDBC besser und macht mehr Spass.
Einmal die Tabelle cities, in welcher Name, population & area der Städte gespeichert sind.
Die andere Tabelle heißt land. In Ihr stehen die länder drin (name, population).
Zusätzlich habe ich jetzt eine country_id angelegt, sprich:
in beiden Tabellen ist eine neue Spalte id dazu gekommen.
Das sieht folgendermaßen aus:
id 1 --> Deutschland --> 80 mio
id2 - -> USA --> 315 mio
etc.
Nun möchte ich in einer dritten Klasse Country alle Städte in einer Liste speichern und dann Städte in der main von Uebung ausgeben lassen, die zum Beispiel in Deutschland liegen(aber in der anderen Tabelle gespeichert sind) mit der Methode ...public Country getCountryByName(String name).
Meine Frage: Wie kann ich da jetzt die Verbindung zwischen den beiden Tabellen herstellen, dass wenn ich Deutschland als Name vorgebe in der main methode in der anderen Tabelle geschaut wird, welche Städte zu Deutschland gehören (Also die id=1 haben) und diese dann ausgeben lasse.
Schau mal hier: Tabellenausdrücke
Da steht was zu PostgreSQL und wie man Tabellen verbindet. Das wird also normalerweise mit SQL und nicht mit Java gelöst.
public Country getCountryByName(String name) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
Connection conn= getConnection();
stmt= conn.createStatement();
String query1= "SELECT*FROM land WHERE name= '" + name + "'";
ResultSet rst= stmt.executeQuery(query1);
Country country= new Country();
while(rst.next()) {
City b= new City();
b.setName(rst.getString("name"));
b.setPopulation(rst.getInt("population"));
country.getCityList().add(b);
}
String query= "SELECT*FROM cities c , land l WHERE l.id=c.country_id AND l.name= '" + name + "'";
ResultSet result= stmt.executeQuery(query);
while(result.next()) {
City c= new City();
c.setName(result.getString("name").trim()); // trim sonst große Lücke
c.setPopulation(result.getInt("population"));
country.getCityList().add(c); //country objekt auf cityList zugreifen
}
conn.close();
return country;
}