Es werden keine Einträge in der Datenbank gemacht

Kirby.exe

Top Contributor
Also ich habe folgendes Problem, wenn ich versuche neue Einträge für die Datenbank zu machen, bleiben meine Zeilen alles auf Null(außer die ID), ich sehe ehrlich gesagt meinen Fehler nicht...Vielleicht sieht ja einer von euch den Fehler :) Ich bedanke mich schonmal im voraus :)

Hier ist der komplette Java Code für die DB:

Java:
package database;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class MainDatabase {
  
    /*===== when class is used through a objekt, table is checked and created =====*/
    public MainDatabase() throws Exception{
        createTable();
    }
  
    /*============ creates table ===============*/
    public static void createTable() throws Exception {
        try {
            Connection conn = getConnection();
            PreparedStatement create = conn.prepareStatement("CREATE TABLE IF NOT EXISTS login (id int NOT NULL AUTO_INCREMENT, username varchar(255), email varchar(255), password varchar(255), birthday varchar(255), mtrNr varchar(255),  PRIMARY KEY(id))");
            create.executeUpdate();
        }catch(Exception e) {
            System.out.println("Error when creating Table");
            e.printStackTrace();
        }
        finally{
            System.out.println("Table successfully created");
        }
    }
  
    /*============ adds entries to table ===============*/
    public void addEntries(String username, String email, String password, String birthday, String mtrNr) throws Exception {
        try {
            Connection conn = getConnection();
            PreparedStatement add = conn.prepareStatement("INSERT INTO login(username, email, password, birthday, mtrNr)VALUES(?,?,?,?,?)");
            add.setString(1, username);
            add.setString(2, email);
            add.setString(3, password);
            add.setString(4, birthday);
            add.setString(5, mtrNr);
            add.executeUpdate();
        }catch(Exception e) {
            System.out.println("Error when saving new Entry!");
            e.printStackTrace();
        }
    }
  
    /*============ deletes entries from table ===============*/
    public void deleteEntries(String email) throws Exception {
        try {
            Connection conn = getConnection();
            PreparedStatement delete = conn.prepareStatement("DELETE FROM login WHERE email = ?");
            delete.setString(1, email);
            delete.executeUpdate();
        }catch(Exception e) {
            System.out.println("Error when deleting Entrie");
            e.printStackTrace();
        }
    }
  
    /*============ fetches entries from table ===============*/
    public ArrayList<String> getEntries(String username, String password) throws Exception{
        try {
            Connection conn = getConnection();
            PreparedStatement getEntries = conn.prepareStatement("SELECT username, password FROM login");
            ResultSet result = getEntries.executeQuery();
          
            ArrayList<String> returnArray = new ArrayList<String>();
            while(result.next()) {
                System.out.println(result.getString("username") + " " + result.getString("password"));
                returnArray.add(result.getString("username"));
            }
            System.out.println("All records have been selected!");
          
            return returnArray;
        }catch(Exception e) {
            System.out.println("Error when loading Entries");
            e.printStackTrace();
        }
        return null;
    }
  
    /*============ sets up connection to SQL database ===============*/
    public static Connection getConnection() throws Exception{
        try {
            String driver = "com.mysql.cj.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/UniDB?useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";
            String username = "testuser";
            String password = "Test123456789";
            Class.forName(driver);
          
            Connection conn = DriverManager.getConnection(url, username, password);
            System.out.println("Connected");
            return conn;
        }catch(Exception e) {
            System.out.println("Connection Failed");
            e.printStackTrace();
        }
        return null;
    }

}

Bild vom Table:

12941

Log der Datenbank:

12942
 

Kirby.exe

Top Contributor
Vielleicht steckt der Fehler ja an anderer Stelle, z. B. dort, wo MainDatabase genutzt wird...
Kann ich auch eben schicken :)

Java:
public void actionPerformed(ActionEvent e) {
                try {
                    MainDatabase data = new MainDatabase();
                    s_username = inputUsername.getText();
                    s_email = inputEmail.getText();
                    if(inputPassword.equals(inputPasswordConfirm)) {
                        s_pw = inputPassword.getText();
                    }else {
                        return;
                    }
                    s_Birthday = inputBirthday.getText();
                    s_MtrNR = inputMtrNR.getText();
                    data.addEntries(s_username, s_email, s_pw, s_Birthday, s_MtrNR);
                }catch(Exception k) {
                    
                }
 

TM69

Bekanntes Mitglied
Ich bin mir zwar ehrlich gesagt nicht sicher, aber ich glaube nicht :)
Naja, schaden würde es ja nicht. Ich würde es ausprobieren, somit bist du auf der sicheren Seite das es daran nicht zusammenhängt.
Was mir noch einfällt, hast du den richtigen Treiber (nicht das du mySQL - Treiber angibst und Postgre verwendest), Port, Benutzername, Password angegeben?
 

TM69

Bekanntes Mitglied
Ergänzung:

hast du es erst einmal mit deinem Verbindungsstring und dem von MySQL - Documentation:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

Connection conn = null;
...
try {
    conn =
       DriverManager.getConnection("jdbc:mysql://localhost/test?" +
                                   "user=minty&password=greatsqldb");

    // Do something with the Connection

   ...
} catch (SQLException ex) {
    // handle any errors
    System.out.println("SQLException: " + ex.getMessage());
    System.out.println("SQLState: " + ex.getSQLState());
    System.out.println("VendorError: " + ex.getErrorCode());
}
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-usagenotes-connect-drivermanager.html

probiert?

Was mir in deinem Code auffällt, bin mir jetzt nicht sicher - nicht nachgeschaut:
Code:
String driver = "com.mysql.cj.jdbc.Driver";
Das cj kommt mir irgendwie so spanisch vor.

Was auch sein kann, dass du einen für jconnector benutzt der gar nicht für deine MySQL Version benutzt werden kann / sollte.
 

Kirby.exe

Top Contributor
Was mir in deinem Code auffällt, bin mir jetzt nicht sicher - nicht nachgeschaut:
Code:
String driver = "com.mysql.cj.jdbc.Driver";
Das cj kommt mir irgendwie so spanisch vor.

Was auch sein kann, dass du einen für jconnector benutzt der gar nicht für deine MySQL Version benutzt werden kann / sollte.

Das könnte sehr gut der Fall sein... :) Wait ich schaue eben nach welchen Connector ich benutze
 

Kirby.exe

Top Contributor
Vielleicht hilft euch das weiter :) Ich benutze den Connector:

12943

Also wenn ich den driver von dir verwende bekomme ich die folgende Fehlermeldung:
Code:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

Ich denke der driver war schon richtig, nur ich habe vermutlich einen riesen Denkfehler :)
 

mihe7

Top Contributor
An der Stelle spielt das keine Rolle, weil er in den Methoden die Exceptions schon behandelt.

Ich glaube, die Lösung liegt eher im Bereich des commits - konkret würde ich (auch unabhängig davon) das Statement mal schließen.
 

Kirby.exe

Top Contributor
An der Stelle spielt das keine Rolle, weil er in den Methoden die Exceptions schon behandelt.

Ich glaube, die Lösung liegt eher im Bereich des commits - konkret würde ich (auch unabhängig davon) das Statement mal schließen.
Also ich hatte mir in die Exception eine Out Print geschrien, er landet jedoch nicht im Catch, weshalb es vermutlich wirklich am Comit liegt...ich schaue mir das an wenn ich wieder zuhause bin :)
 

mihe7

Top Contributor
Der Code ist aber auch verwirrend: überall allgemeine Exceptions, dann per throws deklariert und in Wirklichkeit alles gecatched...

@Kirby_Sike:
Unabhängig davon gilt natürlich, dass ein catch-Block prinzipiell nicht leer sein sollte.

Vom Design her solltest Du die Connection nicht in MainDatabase herstellen, sondern der MainDatabase eine Connection mitgeben.
 

Kirby.exe

Top Contributor
Der Code ist aber auch verwirrend: überall allgemeine Exceptions, dann per throws deklariert und in Wirklichkeit alles gecatched...

@Kirby_Sike:
Unabhängig davon gilt natürlich, dass ein catch-Block prinzipiell nicht leer sein sollte.

Vom Design her solltest Du die Connection nicht in MainDatabase herstellen, sondern der MainDatabase eine Connection mitgeben.
Ok dann werde ich das mal etwas umschreiben :) Habe jetzt auch alle Catch Blocks gefüllt
 

Kirby.exe

Top Contributor
Also ich habe mal alle Connections geclosed nach dem benutzen und jetzt geht er bei mir in den else block beim versuch Daten in die Datenbank einzutragen, da ich noch überprüfe ob die Passwörter übereinstimmen:

Java:
public void actionPerformed(ActionEvent e) {
                try {
                    MainDatabase data = new MainDatabase();
                    s_username = inputUsername.getText();
                    s_email = inputEmail.getText();
                    if(inputPassword.equals(inputPasswordConfirm)) {
                        s_pw = inputPassword.getText();
                    }else {
                        System.out.println("Wrong password");
                        return;
                    }
                    s_Birthday = inputBirthday.getText();
                    s_MtrNR = inputMtrNR.getText();
                    data.addEntries(s_username, s_email, s_pw, s_Birthday, s_MtrNR);
                }catch(Exception ex) {
                    System.out.println("Es konnte nichts hinzugefügt werden");
                }
            }

Das sind die Testwerte:

12944
 
K

kneitzel

Gast
Also wenn Du prüfen willst, ob die Eingabe in zwei Feldern gleich ist, prüfst Du, ob die Felder gleich sind?

Das ist das, was der Code machen würde ...
inputPassword.equals(inputPasswordConfirm)

Also denkbar ist sowas ... mach einfach zwei Textfelder und überschreib equals .. aber viel Sinn macht das nicht wirklich in meinen Augen.

Und wie Du an den Text heran kommst, hast Du ja im if gezeigt - Also solltest Du doch eigentlich den Inhalt der Felder vergleichen können ...
 

Kirby.exe

Top Contributor
Ich kenn ja Deinen Code nicht, aber ist inputPasswordConfirm nicht das Textfeld? Dann müsste hier inputPassword.equals(inputPasswordConfirm.getText()) stehen.

EDIT: @JustNobody war schneller und inputPassword wird vermutlich auch ein Textfeld sein: inputPassword.getText().equals(inputPasswordConfirm.getText())
Ich bin so blöd...xD warum passiert mir so ein scheiß xD Ich hatte gar nicht daran gedacht, dass ich erst wenn das if true ist, die Werte in einen String speichere :)
 

LimDul

Top Contributor
Kleiner Tipp fürs nächste mal für die Selbsthilfe - debuggen.

Entweder mittels des in der IDE integrierten Debuggers (wenn möglich) oder mittels poor mans debugging (System.out.println einbauen).

Und dann folgende zwei Schritte solange wiederholen, bis man den Fehler hat:

1. Wird die Stelle, die nicht klappt (Hier das absetzen des Insert-Statements) aufgerufen? Wenn ja: Ab zu Schritt 2, wenn nein: Von wo wird sie aufgerufen und da wieder mit Schritt 1 beginnen.
2. Haben alle Variablen den erwarteten Wert? Wenn nein, wo werden sie gesetzt und da wieder mit Schritt 1 beginnen.

Dann findet mal solche Fehler recht schnell.
 

Kirby.exe

Top Contributor
Kleiner Tipp fürs nächste mal für die Selbsthilfe - debuggen.

Entweder mittels des in der IDE integrierten Debuggers (wenn möglich) oder mittels poor mans debugging (System.out.println einbauen).

Und dann folgende zwei Schritte solange wiederholen, bis man den Fehler hat:

1. Wird die Stelle, die nicht klappt (Hier das absetzen des Insert-Statements) aufgerufen? Wenn ja: Ab zu Schritt 2, wenn nein: Von wo wird sie aufgerufen und da wieder mit Schritt 1 beginnen.
2. Haben alle Variablen den erwarteten Wert? Wenn nein, wo werden sie gesetzt und da wieder mit Schritt 1 beginnen.

Dann findet mal solche Fehler recht schnell.
Dankeschön :) Werde ich für das nächste mal beherzigen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Es kann keine Verbindung zum Server aufgebaut werden Datenbankprogrammierung 12
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
P Es werden keine Daten mehr in die Tabelle eingefügt Datenbankprogrammierung 4
R Mongodb Daten werden immer überschrieben Datenbankprogrammierung 7
T Datenzeilen werden nicht gelöscht Datenbankprogrammierung 6
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
pkm PostgreSQL Auf eine Spalte kann aus einem Teil der SQL-Aussage nicht zugegriffen werden Datenbankprogrammierung 3
JG12111989 DB-Daten werden falsch dargestellt Datenbankprogrammierung 7
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
Ananaskirsche Datenbanktreiber kann nicht geladen werden Datenbankprogrammierung 2
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
E Warum kann mein SQL-File nicht in DB2 ausgeführt werden? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
B Nur 99% der Datensätze werden in Tabelle geschrieben Datenbankprogrammierung 2
D [xBaseJ] Datei kann nicht geöffnet werden Datenbankprogrammierung 2
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
R Datenbankverbindung kann nicht hergestellt werden Datenbankprogrammierung 8
Kandum MySQL Anzahl gefundener Datensätze bleibt gleich, auch wenn mehr existieren und ausgegeben werden Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
D MySQL Treiber konnte nicht geladen werden Datenbankprogrammierung 3
D MySQL Daten werden aus Datenbank gelesen, obwohl sie dort gar nicht angekommen sind Datenbankprogrammierung 8
L SQLite Daten werden nicht in die Tabelle eingefügt Datenbankprogrammierung 7
D Können nur angesehende Datensätze geloggt werden? Datenbankprogrammierung 4
T Umlaute werden aus der *.mdb nicht gelesen Datenbankprogrammierung 3
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
N Connection kann nicht geschlossen werden!? Datenbankprogrammierung 4
S Hibernate - Abgeleitete Klassen werden nicht angezeigt wenn... Datenbankprogrammierung 6
S Embedded DB, die aus mehreren JVMs gestartet werden kann? Datenbankprogrammierung 10
H Oracle - Indizes werden nicht genommen Datenbankprogrammierung 6
S Identitätsspalte kann nicht aktualisiert werden Datenbankprogrammierung 11
G hibernate.cfg.xml kann nicht gefunden werden. Datenbankprogrammierung 3
B Datenbankverbindung kann nicht aufgebaut werden. Datenbankprogrammierung 2
ARadauer Wann werden Daten übertragen bzw geladen Datenbankprogrammierung 5
T Hibernate - wie werden Kind-Objekte nachgeladen? Datenbankprogrammierung 3
G Daten werden nicht in die datenbank geschrieben Datenbankprogrammierung 6
M SQL-Befehle werden manchmal nicht komplett übermittelt Datenbankprogrammierung 5
M werden executeBatch()-commandos automatisch commitet ? Datenbankprogrammierung 8
H Verbindung mit Connector/J kann nicht aufgebaut werden Datenbankprogrammierung 3
S MySQL und Java: Falsche Daten werden ausgelesen Datenbankprogrammierung 9
M Die gezogenen Daten werden nicht richtig ins JTableeingefügt Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Z Ein haufen Fehlermeldungen aber keine Ahnung warum... Datenbankprogrammierung 9
Z Ein Haufen Fehlermeldungen und keine Ahnung... (H2 DB mit Intellij und Scene Builder ) Datenbankprogrammierung 16
V keine Verbindung möglich (Access-DB) Datenbankprogrammierung 3
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
J keine Werte vom PHP Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
S DB2 Express C - keine Verbindung zur Datenbank Datenbankprogrammierung 2
D Keine Datenbankverbindung Datenbankprogrammierung 4
M Keine Antwort der Datenbank bei updateQUery(); Datenbankprogrammierung 2
J SQL-Statement Trigger zeigt keine Wikrung PL/SQL Datenbankprogrammierung 2
W Keine ODBC-Verbindung zur MSAccess-Datenbank Datenbankprogrammierung 2
E Warum kann ich keine Datenbank mit DB2 erstellen? Datenbankprogrammierung 2
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
L Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception Datenbankprogrammierung 4
T JAR keine H2 driver? Datenbankprogrammierung 3
B Mysql speichert keine 0 alls String Datenbankprogrammierung 11
D Keine Einträge in die Datenbank Datenbankprogrammierung 5
E Derby/JavaDB Keine Reaktion von "insert into" im ActionListener Datenbankprogrammierung 22
Kenan89 Keine Datenbankverbindung möglich Datenbankprogrammierung 52
E JDO -> keine Maps Datenbankprogrammierung 2
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
F ORA 17410 Keine weiteren Daten aus Socket zu lesen Datenbankprogrammierung 2
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
G MySQL Bekomme keine Daten. Datenbankprogrammierung 7
K Keine ResultSet bei if in StoredProcedure Datenbankprogrammierung 16
C MySQL Keine Datenbankverbindung Datenbankprogrammierung 6
André Uhres SQL Abfrage erkennt keine Buchstaben mit Akzenten (z. B. é, è) Datenbankprogrammierung 3
P Hibernate -> SQL verwenden und keine Entity Datenbankprogrammierung 19
F Kann keine Verbindung mit HSQLDB aufbauen Datenbankprogrammierung 2
M Keine doppelten Datensätze einfügen Datenbankprogrammierung 24
C keine Verbindung zur MS-SQL-Datenbank mehr Datenbankprogrammierung 4
Y Keine verbindung mit der Datenbank Datenbankprogrammierung 2
D Keine Ausgabe der Daten Datenbankprogrammierung 3
C Keine Verbindung Datenbankprogrammierung 12
B JDBC txt File keine Row ID Datenbankprogrammierung 4
J JDBC - setAutoCommit(false) hat keine wirkung? Datenbankprogrammierung 2
S ResultSet enthält keine Daten Datenbankprogrammierung 2
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
A Fehlermeldung: Keine Daten verfügbar Datenbankprogrammierung 2
M Hilfe - keine Connection zur DB Datenbankprogrammierung 4
C Keine Verbindung zu HSQLDB möglich Datenbankprogrammierung 22
G Keine Aussicht mit Prepared Statement Datenbankprogrammierung 10
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
I Kann keine Daten aus ResultSet holen ? Datenbankprogrammierung 11
J Keine Connection zur MySQL Db Datenbankprogrammierung 6
I Keine Treiber-Klasse! Datenbankprogrammierung 9
K keine Verbindung zu mysql Datenbank Datenbankprogrammierung 11
W Keine leeren Felder bei Access Datenbankprogrammierung 15
M Bekomme keine Daten in die DB! Datenbankprogrammierung 11
H Kann keine Verbindung zur DB herstellen Datenbankprogrammierung 7
G linux mysql keine verbindung Datenbankprogrammierung 8
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
F MySQL Doppelte Einträge verhindern Datenbankprogrammierung 2

Ähnliche Java Themen


Oben