Unterschiedliche Datentypen - worin abspeichern?

Tetr4

Mitglied
Hallo zusammen,

in meiner Freizeit beschäftige ich mich gerade etwas mit Java.
Als kleines Hobbyprojekt habe ich mir folgendes überlegt:
Ich würde gerne ein kleines Lauftagebuch programmieren. In diesem sollen die folgenden Angaben gespeichert werden können:
  • Laufdatum
  • Zeit die ich unterwegs war
  • Anzahl gelaufener Kilometer

Ich stelle mir nur gerade die Frage, worin ich all diese unterschiedlichen Angaben abspeicher kann. Bisher sagen mit Arrays und die Arrayliste etwas. Aber sind diese auch für unterschiedliche Datentypen (Datum, Zeit und int) geeignet? Was sollte ich mir für mein Unterfangen einmal ansehen?

Vorab vielen Dank für eure Hilfe.
 

Jw456

Top Contributor
Du willst doch die Daten auch nach dem ausschalten des Rechners noch haben.
Da würde ich zu einer Datenbank Tendieren.


Dann baue eine Klasse mit den Daten die du für einen Datensatz brauchst.
Dann erstelle eine Liste von Typ dieser Klasse. Wo du nun deine Daten speichern kannst.
 

Jw456

Top Contributor
JA

Verschiedene DatenTypen in einer Liste etwa so

Java:
public class Lauf {
    Date datum;
    Date zeit;
    double strecke;

    public Lauf(Date datum, Date zeit, double strecke) {
        Datum = datum;
        this.zeit = zeit;
        this.strecke = strecke;
    }
    // Getter Setter
     
}

    List<Lauf> liste = new ArrayList<>();
 

Tetr4

Mitglied
Hallo zusammen,

jetzt muss ich den Thread doch nochmal rauskramen.

Java:
System.out.println("Wann fand der Lauf statt?");
        String datum = reader.nextLine();
       
        System.out.println("Wie viele km bist du gelaufen?");
        int km = Integer.valueOf(reader.nextLine());

        String sql_insert = "INSERT INTO Lauftagebuch VALUES ('datum', 'km')";

1 Frage: Wie übergebe ich die Variablen "datum" und "km" an die H2-Datenbank bzw. in die SQL-Query?
2 Frage: Das Datum-Format gefällt mir nicht. Wie kann ich das Format von YYYY-MM-DD in DD-MM-YYYY ändern?

Leider hab ich via google keine brauchbaren Antworten auf meine Fragen gefunden.
Vorab vielen Dank für eure Unterstützung.
 

Oneixee5

Top Contributor
Datum ist Datum, wenn es formatiert ist, dann ist es ein String.
Für den Insert-Befehl, sieh dir PreparedStatement an. Such dir am Besten ein Tutarial dazu.
 

Neumi5694

Top Contributor
Als Alternative zur DB könntest du auch eine serialisierte Textdatei verwenden. Letztendlich hast du da ja nichts großartiges, das eine Tabelle benötigt.
Ich würde dafür GSON empfehlen. Wenn man die Liste noch in eine Containerklasse (nenn ich mal ListContainerClass) packt, dann stehen dort dann auch die Typeninformationen und man muss Gson nicht mehr sagen, was in der Liste gespeichert ist (Stichwort Deserialierung).
//In diesem Beispiel nach String, geht aber auch direkt in eine Datei oder einen Zip-Stream

Java:
var textfilecontent = new Gson().toJson(listcontainer);
var newlistcontainer = new Gson().fromJson(textfilecontent, ListContainerClass.class);


ps: Wenn du mit solchen Datendateien arbeitest, gewöhn dir von Anfang an an, sie in UTF8 zu speichern und auch als solche zu lesen. Wenn du den Default verwendest, dann ist die Codierung abhängig vom gewählten Betriebssystem.
 

Oneixee5

Top Contributor
Beispielcode von ChatGPT (ich wollte das auch mal probieren ;))
Java:
import java.sql.*;

public class RunningJournal {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/running_journal";

    static final String USER = "username";
    static final String PASS = "password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
            // Register JDBC driver
            Class.forName(JDBC_DRIVER);

            // Open a connection
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // Execute a query
            System.out.println("Creating table in given database...");
            stmt = conn.createStatement();
            String sql = "CREATE TABLE runs (id INTEGER NOT NULL AUTO_INCREMENT, distance FLOAT, time INTEGER, date DATE, PRIMARY KEY (id))";
            stmt.executeUpdate(sql);
            System.out.println("Created table in given database...");

            // Insert a row
            sql = "INSERT INTO runs (distance, time, date) VALUES (5.0, 30, '2022-01-01')";
            stmt.executeUpdate(sql);
            System.out.println("Inserted a row into the table");

            // Update a row
            sql = "UPDATE runs SET distance = 5.5 WHERE id = 1";
            stmt.executeUpdate(sql);
            System.out.println("Updated the distance of the run with id 1");

            // Delete a row
            sql = "DELETE FROM runs WHERE id = 1";
            stmt.executeUpdate(sql);
            System.out.println("Deleted the run with id 1");

            // Retrieve data
            sql = "SELECT * FROM runs";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
            ...
Das Beispiel ist nicht ganz vollständig und nicht auch so optimal. Man sollte ry-with-resources resource management verwenden. Das habe ich auch noch mal bei ChatGPT eingegeben:
Java:
import java.sql.*;

public class RunningJournal {
    // JDBC driver name and database URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost/running_journal";

    // Database credentials
    static final String USER = "username";
    static final String PASS = "password";

    public static void main(String[] args) {
        // Try-with-resources to automatically close resources
        try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT run_id, distance, duration FROM runs")) {

            // Extract data from result set
            while(rs.next()) {
                // Retrieve data by column name
                int runId = rs.getInt("run_id");
                double distance = rs.getDouble("distance");
                double duration = rs.getDouble("duration");

                // Display values
                System.out.print("ID: " + runId);
                System.out.print(", Distance: " + distance);
                System.out.println(", Duration: " + duration);
            }
        } catch (SQLException se) {
            // Handle errors for JDBC
            se.printStackTrace();
        }
        System.out.println("Goodbye!");
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Man sollte ry-with-resources tresource management verwenden. Das habe ich auch noch mal bei ChatGPT eingegeben:
Ja, das ist übrigends da tolle bei ChatGPT: Erweitere das einfach .... Du kannst da sehr schön Dinge machen und diese immer weiter erweitern. Also auch Refactorings sind möglich aber: Er macht das wie ich hier im Forum: Er nimmt die letzte Antwort und macht da am Code rum - und baut da auch gerne mal Fehler ein. Ich habe daalso nach Refactorings auch schon Code gehabt, der danach was anderes machte.

Daher ist die Prüfung wirklich wichtig.
 

Tetr4

Mitglied
Hi,

ChatGPT ist für einen Anfänger ja super demotivierend ... Wofür ich gestern 1-2 Stunden gebraucht habe und diverse Internetseiten gewälzt habe, braucht die KI wenige Sekunden ...
Na wenigstens hab ich etwas dabei gelernt. Und der Vergleich zwischen dem KI-Code und meinem ist echt interessant :)
 

Oneixee5

Top Contributor
Hi,

ChatGPT ist für einen Anfänger ja super demotivierend ... Wofür ich gestern 1-2 Stunden gebraucht habe und diverse Internetseiten gewälzt habe, braucht die KI wenige Sekunden ...
Na wenigstens hab ich etwas dabei gelernt. Und der Vergleich zwischen dem KI-Code und meinem ist echt interessant :)
Das denkst du nur, weil du es nicht besser weißt. In dem Code oben fehlt z.B.: noch die dynamische Übergabe von Parametern in PreparedStatements.
Java:
String SQL = "SELECT * FROM employees WHERE id=?";

try (Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
     PreparedStatement stmt = conn.prepareStatement(SQL)) {

    stmt.setInt(1, employeeId); //-> employeeId - ist der Parameter
    ResultSet rs = stmt.executeQuery();

    while (rs.next()) {
        String name = rs.getString("name");
        // process the result set
    }
} catch (SQLException e) {
    // handle the exception
}
ChatGPT ist weit von Richtigkeit und Perfektion entfernt. Es kommt natürlich auch darauf an wie man das Problem formuliert. Das Ergebnis muss man genau bewerten und analysieren. Also ist das eher eine Tippmaschine für Vorschläge.
 

KonradN

Super-Moderator
Mitarbeiter
Hi,

ChatGPT ist für einen Anfänger ja super demotivierend ... Wofür ich gestern 1-2 Stunden gebraucht habe und diverse Internetseiten gewälzt habe, braucht die KI wenige Sekunden ...
Na wenigstens hab ich etwas dabei gelernt. Und der Vergleich zwischen dem KI-Code und meinem ist echt interessant :)
Da aber wirklich aufpassen:
- Der Code der KI ist nicht gut!
a) Es wird etwas generiert, das funktionieren kann (aber nicht muss!). Aber es kann auf jeden Fall ein guter Anfang sein. Bei Aufgaben ist es in der Regel immer ausreichend.
b) Es ist kein Clean Code - daher den Code der KI bitte nicht als "Musterlösung" nehmen!

Und lass Dich nicht demotivieren. Die KI kann nur Dinge im Kleinen. Die Aufgabe des Entwicklers ist es nicht, kleine Codes zu schreiben a.la. "Ich implementiere jetzt Bubblesort". Die Kernarbeit ist und bleibt, komplexe Probleme zu analysieren und zu strukturieren, so dass diese dann in kleinen Schritten abgearbeitet werden können.
Die KI ersetzt den ENtwickler also nicht. Es wird aber den Entwickler immer stärker unterstützen. So wird die bister statische Codeanalyse durch KI durchgeführt. Die KI hilft dann, Sicherheitslücken zu finden. Das ist also eine Form der Qualitätssicherung. Und beim Entwicklungsprozess gibt es dann Tools, die Code Bausteine vorschlagen. Da gibt es bereits mehrere Lösungen und da schreibt die KI einem dann Teile vom Code.

Das geht übrigens auch recht gut mit ChatGPT. Da kann man der KI schön sagen, was man braucht. Das zusammen mit einer Sprachsteuerung und wir sind bei Star Trek Next Generation:
  • Computer, ich möchte in Java eine Datenbankstruktur auslesen und ausgeben mit Tabellen, Feldern mit Typ und den Relationen zwischen den Tabellen
  • Computer, erzeuge mir Datenklassen für die ausgelesenen Informationen
  • Computer, erzeuge mir Code, der die Datenklassen füllt
  • Computer: Refacturiere: Ich müchte xxxxx als yyyyy
  • Computzer: Schreibe mir Unit Tests
  • ....
Edit: Rechtschreibfehler...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
S Datentypen Array fill Methode - unterschiedliche Datentypen Java Basics - Anfänger-Themen 6
B Wie kann ich unterschiedliche Datentypen in einem Feld abbilden? Java Basics - Anfänger-Themen 5
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
F Falscher Link zum Path? Unterschiedliche Antworten bei Eclipse und VisualStudiocode Java Basics - Anfänger-Themen 5
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
J Unterschiedliche Ordnerstrukturen trotz gleicher Entwicklungsumgebungen Java Basics - Anfänger-Themen 3
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
J 2 Arrays vergleichen (Unterschiedliche Längen) Java Basics - Anfänger-Themen 42
F for schleife - stark unterschiedliche Berechnungszeit Java Basics - Anfänger-Themen 30
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
OnDemand Bindestrich unterschiedliche? Java Basics - Anfänger-Themen 3
O Unterschiedliche Attribute in Objekklasse? Java Basics - Anfänger-Themen 5
J Unterschiedliche Spaltengröße im Grid(bag)layout Java Basics - Anfänger-Themen 6
N Applets: unterschiedliche Java Versionen Java Basics - Anfänger-Themen 7
B Zwei Unterschiedliche Klassen bei Instanzierung Java Basics - Anfänger-Themen 5
M Methode soll zwei unterschiedliche primitives zurückgeben Java Basics - Anfänger-Themen 7
R Unterschiedliche Initialisierungen Java Basics - Anfänger-Themen 3
A unterschiedliche Schreibweisen Java Basics - Anfänger-Themen 19
ARadauer String.split -> unterschiedliche längen Java Basics - Anfänger-Themen 2
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
P Servlet unterschiedliche Server Java Basics - Anfänger-Themen 2
T Unterschiedliche Werte beim FileInputStream Lesen Java Basics - Anfänger-Themen 2
G Unterschiedliche Arten jars einzubinden in Eclipse. Warum? Java Basics - Anfänger-Themen 4
A Unterschiedliche Pfade je nach OS? Java Basics - Anfänger-Themen 4
N Unterschiedliche Resultate bei RUN und DEBUG !? Java Basics - Anfänger-Themen 8
O Unterschiedliche Masken Java Basics - Anfänger-Themen 7
V funktionen/Variablen f. unterschiedliche Klassen definierne? Java Basics - Anfänger-Themen 6
M unterschiedliche arten von methoden Java Basics - Anfänger-Themen 4
S Mit line.split() leider unterschiedliche Anzahl von Spalten Java Basics - Anfänger-Themen 19
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
J Einige Anfängerfragen (Datentypen, Wertebereich) Java Basics - Anfänger-Themen 11
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
T Datentypen Eigene Datentypen Java Basics - Anfänger-Themen 15
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
Nicolex3 Größere Datentypen Java Basics - Anfänger-Themen 35
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
L Binären Bäume für beliebige Datentypen Java Basics - Anfänger-Themen 15
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
SHasteCode Datentypen Überlauf primitiver Datentypen Java Basics - Anfänger-Themen 4
S Datentypen Java Basics - Anfänger-Themen 14
Antegra Tekkrebell Primitive Datentypen Literal 8072 Java Basics - Anfänger-Themen 21
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
S Datentypen Java Basics - Anfänger-Themen 4
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
H wählen des kleinstmöglichen Datentypen für Gleitkommazahlen. Java Basics - Anfänger-Themen 2
S Datentypen Java Basics - Anfänger-Themen 2
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
J Zusammenhang Numbers und nummerische Datentypen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
D Spezifikation abstrakter Datentypen Java Basics - Anfänger-Themen 3
W Datentypen Datentypen vergleichen Java Basics - Anfänger-Themen 4
B JAVA Datentypen/Überlauf Java Basics - Anfänger-Themen 4
I Erste Schritte HILFE bei Datentypen Java Basics - Anfänger-Themen 2
J Wertebereiche und Datentypen Java Basics - Anfänger-Themen 12
N Methode mit 2 Datentypen. Fehler? Java Basics - Anfänger-Themen 1
N Probleme mit Datentypen Java Basics - Anfänger-Themen 6
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
K new / Datentypen Java Basics - Anfänger-Themen 3
S Datentypen und ihre Größe Java Basics - Anfänger-Themen 21
T Variablen Varargs und beliebige Datentypen Java Basics - Anfänger-Themen 7
S Datentypen Sonderbehandlung primitiver Datentypen, fixe Konstanteninterpretation Java Basics - Anfänger-Themen 10
G Wertebereiche bei Datentypen Java Basics - Anfänger-Themen 10
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
H Mehrer Datentypen aus einer Methode ausgeben. Java Basics - Anfänger-Themen 25
O Array mit unterschiedlichen Datentypen ausgeben... Java Basics - Anfänger-Themen 16
A Generische Datentypen Java Basics - Anfänger-Themen 8
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
T ArrayList mit verschiedenen Datentypen verhindern Java Basics - Anfänger-Themen 8
N Bedingung für Datentypen Java Basics - Anfänger-Themen 3
R Array aus verschiedenen Datentypen Java Basics - Anfänger-Themen 29
J Datentypen Datentypen Java Basics - Anfänger-Themen 7
H null und primitive Datentypen Java Basics - Anfänger-Themen 6
N ArrayList mit eigenem Datentypen Java Basics - Anfänger-Themen 3
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
M Frage zu Datentypen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
O Rückgabewert mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 10
S Nicht Primitive Datentypen Java Basics - Anfänger-Themen 5
C Verwendung von primitiven Datentypen Java Basics - Anfänger-Themen 8
Spin Eigenen Abstrakten Datentypen Java Basics - Anfänger-Themen 28
J Datentypen Rechnen mit unterschiedlichen Datentypen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben