Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden

singhclgn

Mitglied
Ich erkläre meine Frage am besten direkt an der Praxis:

Ich habe eine Klasse Haus mit verschiedenen Parametern zum Beispiel double Zimmerzahl. Dann habe ich eine main, in dem ich ein Objekt Haus Einfamilienhaus = new Haus (Zimmer, Preis, Wert usw.) erstelle.

Ich habe viele Methoden zum Beispiel geschätzterWert();

Also mein Objekt sieht ca.so aus:
Java:
Haus Einfamilienhaus = new Haus (Zimmer, Preis, angenommenerPreis);

Die Zimmer und den Preis gebe ich manuell ein:
Java:
Haus Einfamilienhaus = new Haus ( 5, 300000, angenommenerPreis);

Ich möchte, dass angenommenerPreis durch die Zahl ausgefüllt wird, die die geschätzterWert(); Methode aus meiner Datenbank zieht...

Ich hoffe ich konnte das gut erklären
 
Java:
Haus Einfamilienhaus = new Haus ( 5, 300000, db.geschätzterWert());
?
Zumindest ist die Rote Unterstreichung schonmal weg 😀 Aber da gibt es noch ein Problem: Ich habe mehrere Objekte und wie mache ich das da? Es sind ja verschiedene Häuser und diese haben entsprechend verschiedene Wertschätzungen die aus verschiedenen Tabellen der Datenbank gezogen werden müssen.

Also so sieht meine Methode aus:
Java:
public static void geschätzterWert(String Table_One, String Column_One) throws Exception {
        ConnectTodb db = new ConnectTodb("meinPasswort");
        db.connect();
        Statement stmt = db.getStatement();
        
        String sqlstatement = "SELECT * FROM (select Column_One, row_number() over(order by One_date desc) rn from Table_One) where rn = 1";
        
        ResultSet rs = stmt.executeQuery(sqlstatement);
        
        while (rs.next()) {
            double WertSchätzung = Double.parseDouble(rs.getString("Column_One"));
        }
    }
 
Das kannst du erstmal getrost komplett in die Tonne werfen:
1. Du willst nicht für jedes Haus eine neue Verbindung zur DB aufmachen
2. Deine Methodenparameter werden doch überhaupt nicht verwendet. Dein SQL Statement in sqlstatement besteht aus einem einzigen konstanten Stringliteral, welches überhaupt nichts mit den Methodenparameter zu tun hat, bzw. durch tatsächliche Argumente beeinflusst wird.
3. Genauso wenig beeinflusst kein Parameter, auf welche Column du tatsächlich im ResultSet zugreifst. Auch "Column_One" ist ein konstantes Stringliteral
4. Die Methode liefert überhaupt keinen Wert als Rückgabewert zurück
5. Du schließt die entsprechenden schließbaren Objekte (Statement und ResultSet und vermutlich auch deine Connection) nicht
 

Neue Themen


Zurück
Oben