Probleme mit der Datenbank


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
#1
Hallo,

ich habe folgende Probleme mit meiner Datenbank:

  • Ich möchte überprüfen, ob die Datenbank leer ist und Folge dessen wird eine Fehlermeldung geworfen, die dem User sagen soll, dass keine Werte in der Datenbank vorhanden sind. Ich habe versucht und versucht, aber nichts hat geholfen. rs.wasNull() sollte dabei helfen, aber nur in Verbindung mit rs.getString(…) - nichts ging. Hier einmal der "normale" Code ohne Null-Check:
Java:
String query = "SELECT * FROM meineTabelle";
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery(query);
            
            while(rs.next()) {
                
                model.addElement(rs.getString(2) + "-" + rs.getString(3));
            }
            
            status.setText("Der Daten-Download war erfolgreich.");
Wie man sieht, werden die abgerufenen Datenbank-Inhalte in eine JList überschrieben, die auch optimal läuft. Kann mir da bitte jemand weiterhelfen? :unsure:

  • Bei meinem Login-Programm habe ich das selbe Problem - nur umgedreht. :rolleyes: Der User gibt für die Registrierung seine E-Mail Adresse und ein Passwort ein. Diese beiden Werte werden in einen Datenbank gespeichert. Es würde Sinn ergeben auch hier einen Null-Check durchzuführen. Doch leider funktioniert der nicht und auch hier habe ich x-mal versucht und verzweifle allmählich daran. Der Code ohne Null-Check ist wie folgt:
Java:
String sEMailAdresse = eMailAdresseEingabe.getText();
            @SuppressWarnings("deprecation")
            String sPasswort = passwortEingabe.getText();
            String query = "INSERT INTO benutzer_tb VALUES(null, '"+sEMailAdresse+"', '"+sPasswort+"')";
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery(query);
Hat jemand eine Lösung parat? :D

Vielen Dank für eure Hilfe.

Freundliche Grüße
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hallo Nico2201,

dein erstes Statement könntest du so anpassen wie hier: https://stackoverflow.com/a/8405098/1164913
Somit könntest du den Fall, dass er nichts findet einfach abfragen.

Beim zweiten würde dir ein UNIQUE-Constraint auf der Spalte der Email-Adresse helfen, dann würde bei deiner Zeile 6 eine Exception fliegen (weils die Mailadresse schon gibt). Das würde auch eine vorherige Abfrage der Mailadresse sparen.

Ausserdem würde ich das Passwort nicht unverschlüsselt in der Datenbank abspeichern, bitte verwende hierfür einen Einweg-Hash: https://howtodoinjava.com/security/...password-hash-md5-sha-pbkdf2-bcrypt-examples/ (Hier bitte beachten, dass MD5 und SHA1 nicht mehr sicher sind und nur der Vollständigkeit halber erklärt werden)

Grüsse,
BK
 
#3
Hat alles geklappt.

Da das Projekt Passwörter speichern und anzeigen soll, ist eine solche Verschlüsselung unpraktisch, da man sie nicht wieder umwandeln kann (laut dieser Seite).

Vielen Dank für deine Hilfe.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…