Vom SQL Array ausgeben

Bitte aktiviere JavaScript!
Hallo,

ich versuche eine Klasse zu erstellen, die mir alle Daten von einer Datenbank zurückgibt.

Java:
package ch.yourclick.zt;

import java.sql.*;

class Database {

    static boolean getData(String sql) {
        // Ensure we have mariadb Driver in classpath
        try {
            Class.forName("org.mariadb.jdbc.Driver");
        }
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        String url = "jdbc:mariadb://localhost:3306/zt_productions?user=root&password=test";

        try {
            Connection conn = DriverManager.getConnection(url);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(sql);

            return rs.next();

        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

}
Diese Klasse könnte ich dann z.B. in einer anderen Klasse mit Database.getData("SELECT * FROM users") abrufen und ich bekomme dann ALLE Daten, welche dem Parameter (SQL) entspricht am besten in einer Array geliefert.

Ich weiß, dass ich mit return rs.next(); völlig falsch bin, weil der liefert mir nur ein true zurück. Wie kann ich machen, dass der mir ein Array liefert?
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
Java:
try {
    Connection conn = DriverManager.getConnection(url);
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM users);

    while (rs.next()) {
        meinArray.add(rs.getInt("userID"));
        meinArray2.add(rs.getString("username"));
        meinArray3.add(rs.getString("password"));
    }

    stmt.close();
}
So könnte es aussehen.
Du musst nicht drei ArrayLists verwenden. Das ist nur ein Beispiel.
 
Zuletzt bearbeitet:
Also die Idee so einer Funktion ist denkbar. Aber das wird deutlich komplexer, denn 'Array' sagt ja nicht viel aus. Du musst Dir also einen Datentyp überlegen, der eine beliebige Tabelle aufnehmen kann. Dazu gehört also zum einen eine ihre bezüglich der Spalten (Name, Typ, ...) und dann die Daten selbst.

Und dann könntest du weiter überlegen, was man sonst noch so braucht. Man will Daten ja ändern können (Insert, Update und delete)....

Dann kann man sich überlegen, dass man evtl. mit dem Speicherplatz sparsamer umgehen muss ... Eine große Tabelle ganz in den Speicher zu laden ist evtl. nicht optimal. Und dann will man mit den Daten ja arbeiten, d.h. es macht doch Sinn, dass man Klassen für einzelne Entities hat ....

Und dann siehst du hoffentlich, dass es eben nicht ganz so trivial ist. Aber es gibt vieles fertiges. Hibernate könnte man sich ansehen, JPA, ....

Soviel einfach einmal Mal von meiner Seite ...
 
Oder man merkt eben, dass es einfacher ist, doch richtige Entities zu haben und nutzt entsprechend Libraries ....

Hab aber auch Mal einen eigenen Data Layer Creator geschrieben. Hat mir für eine Datenbank die POJOs erzeugt und dazu alle Funktionen zum Laden, speichern, ...

Aber war unnötig sowas zu entwickeln. Gibt besseres schon fertig :)
 
Oder man merkt eben, dass es einfacher ist, doch richtige Entities zu haben und nutzt entsprechend Libraries ....
Ja :)

Wobei wir tatsächlich so eine Allroundmethode mit CachedRowSet auch schon verwendet haben, um mit JSF Tabellen aus DB-Views ohne großen Aufwand anzuzeigen. Die Spaltennamen werden dann aus den Metadaten genommen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben