Daten aus einer Datenbank in einem Array Speichern

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

StillerRegen

Mitglied
Guten Tag,

Ich komme grade nicht weiter und zwar möchte ich spezifische Daten aus einer Datenbank, wie Name,Vorname, Geburtstag, Geburtsmonat und evtl. Geburtsjahr in einem Array speichern.
Die Verbindung zur Datenbank ist erfolgreich die Daten der Datenbank sind auch schon ausgegeben nur weiß ich jetzt nicht wie ich die in einem Array packen sollte.

Kann mir da jemand helfen?

Java:
public class Verbindung {
  
    public static void main(String[] args) {
      
        try {
      
          
            // Verbindung mit der SQLite Datenbank
          
            Class.forName("org.sqlite.JDBC");
            Connection conn = DriverManager.getConnection(
                    "jdbc:sqlite:C:\\Users\\A79006905\\AppData\\Local\\Downloaded Apps\\SQLiteStudio\\3.1.1\\Geburtstag.db");
            System.out.print("Verbindung Erfolgreich \n");

      
        // SQL Daten
        Statement stmt = null;
        String query = "SELECT * FROM ta_person";
      
         stmt = conn.createStatement();
       
         ResultSet rs = stmt.executeQuery(query);
      
         while (rs.next())
          {
            int id = rs.getInt("psn_id");
            String lastName = rs.getString("psn_nachname");
            String firstName = rs.getString("psn_vorname");
            int gday = rs.getInt("psn_geburtstag");
            int gmonth = rs.getInt("psn_geburtsmonat");
            int gyear = rs.getInt("psn_geburtsjahr");
         
      
          
          
            // print the results
            System.out.format("%s, %s, %s, %s, %s, %s\n", id, firstName, lastName, gday, gmonth, gyear);
          }
          stmt.close();
      
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
            System.err.println("Got an exception! ");
              System.err.println(e.getMessage());
        }
 
Zuletzt bearbeitet:
Hi,

du möchtest wahrscheinlich für jede Zeile deines Ergebnisses einen Eintrag in deinem Array haben, oder?
Hierzu würde ich zuerst noch eine andere Java-Klasse anlegen, welche eine Person repräsentiert.
Diese sollte neben den Attributen (id, vorname, nachname...) natürlich auch Getter und Setter besitzen. Zusätzlich hierzu würde es sich auch anbieten, die toString() Methode so zu überschreiben, dass hier das aus deiner Zeile 37 geliefert wird.

Anschliessend kannst du ausserhalb deiner while-Schleife eine ArrayList<Person> definieren und diese dann innerhalb des while mit "list.add(Person)" befüllen. Nach deiner while-Schleife kannst du (falls du wirklich ein Array benötigst und keine Liste) auf deiner List per ".toArray(new Person0])" das ganze in ein normales Array umwandeln. Wenn du ein String[] brauchst, dann kannst du das per "list.stream().map(Person::toString)" in eine List<String> und wieder per ".toArray(new String[0])" in ein String-Array umwandeln.

Grüsse,
BK
 
Hey Bratkartoffel,

erstmal vielen Dank für deine Hilfe.
Habe mich doch entschieden für eine Liste, weil ich die Größe nicht weiß und eine list ja veränderbar ist. auf jeden Fall habe ich eine Klasse Person erstellt:

Java:
public class Person {
    public String name;
    public String vorname;
    public MonthDay geburtstag;

    public Person(String vorname, String name, MonthDay geburtstag) {
        this.name = name;
        this.vorname = vorname;
        this.geburtstag = geburtstag;
    }

    public void setPerson(String vorname, String name, MonthDay geburtstag) {
        this.name = name;
        this.vorname = vorname;
        this.geburtstag = geburtstag;

    }

    public String getPerson1() {
        return this.vorname;
    }

    public String getPerson() {
        return this.name;
    }

    public MonthDay getTag() {
        return this.geburtstag;
    }
}

Nur habe ich grade ein Problem beim List Add, ich weiß nicht wie ich das jetzt so schreiben soll

Java:
ArrayList<Person> Per = new ArrayList<Person>();
            
            
            while (rs.next()) {
                int id = rs.getInt("psn_id");
                String lastName = rs.getString("psn_nachname");
                String firstName = rs.getString("psn_vorname");
                int gday = rs.getInt("psn_geburtstag");
                int gmonth = rs.getInt("psn_geburtsmonat");
                int gyear = rs.getInt("psn_geburtsjahr");
               
                Per.add(Person);

Kannst du mir da bitte weiterhelfen?
 
Java:
Per.add(Person);

Du musst schon eine neue Person erstellen, die du hier hinzufügst.

also
Java:
Per.add(new Person(lastName, firstName, MonthDay.of(gmonth, gday)));

Müsstest du nicht die einzelnen Werte in deine Liste packen? :unsure: Versuch das mal.
Bitte nicht.
 
@HonniCilest

Danke!!!

Ist es auch normal, dass dann bei einer System.out.print anweisung, das komisch da steht in kleinen "verschlüsselungen"?

[Geburtstag.Person@7506e922, Geburtstag.Person@4ee285c6, Geburtstag.Person@621be5d1, Geburtstag.Person@573fd745, Geburtstag.Person@15327b79]
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück