ArrayList Username und passwort mit JTextField eingaben abgleichen

Symfuhny

Mitglied
Hallo,

ich arbeite zurzeit an meinen Uni Projekt und komme mit dem LogIn nicht mehr weiter.
Ich bin soweit gekommen das ich die Daten aus der Datenbank(sql) heraus genommen habe und in eine ArrayList gespeichert habe.
Die daten aus der datenbank haben mehrere spalten mit Vorname , name , username , passwort.

Mir fehlt der ansatzweise wie ich die Eingabe durch die ArrayListe abgleiche ob der Username und das passwort so in der kombination vorhanden sind.
 
Wieso fragst du nicht gleich die DB mit den Login Daten ab?
Wenn du zb tausende Einträge in der DB hast wisst du die alle übertragen und in der liste Speichern und prüfen.

Ansonsten gehe deine Liste mit einer Schleife durch.
 
Wieso fragst du nicht gleich die DB mit den Login Daten ab?

Ansonsten gehe deine Liste mit einer Schleife durch.
Ich wollte den LogInProzess gerne in einer extra methode haben und mir fiel nix besseres ein außer alle Daten in die ArrayList zu speichern.

Stellst du es dir mit seiner einer Schleife for?
Wie überprüfe ich dann wenn der Username gefunden wurde und das passwort richtig ist?

for(int i = 0; i < alleUser.size(); i++) {

}

Danke.
 
hast du mal eine SQL anfrage mit einem "where" gebaut ?
Java:
SELECT name,passwort FROM users WHERE name=? AND passwort=?
die fragezeeichen kannst du beim prepared statement füllen mit werten... das findest du aber selber raus
 
wie schaut denn deine Liste aus .
[CODE lang="java" title="arraylist"]public ArrayList<User> GetUser() {
OracleDsSingleton ora = OracleDsSingleton.getInstance();
try {
ArrayList<User> ret = new ArrayList<User>();
Connection con = ora.getConnection();
Statement stmt = con.createStatement();
String query = "SELECT * FROM USERDATA";
ResultSet rs = stmt.executeQuery(query);

while (rs.next()) {
String vorname = rs.getString("vorname");
String nachname = rs.getString("nachname");
String username = rs.getString("username");
String passwort = rs.getString("passwort");
int punkte = rs.getInt("punkte");


User user = new User( vorname,nachname,username,passwort,punkte );

ret.add(user);

}
return ret;

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

}[/CODE]
 
wenn du es mit deiner liste machen willst.
gehe sie durch und holle dir aus den user objekt die die userdaten und vegleiche sie mit den login daten
 
deine DB ist darauf ausgelegt daten zu durchsuchen sie zu finden und zu verbinden... es selber schlehcter zu tun ist nicht zielführend... lass die db das tun was sie kann

und das ist mit daten zu hantieren, eg dem where statement in deinem fall
 
Wäre es den eine bessere Methode die Daten direkt aus der Datenbank abzugleichen ?
Ja
Du solltest folgendes beachten: Passwörter nicht im Klartext speichern. Du speicherst nicht das PW sondern das Ergebnis einer Hashfunktion. Beim Login gehst du genauso vor, PW-Eingabe wird mit der Hashfunktion geändert und damit die DB abgefragt. Oracle kennt solche Hashfunktionen von Haus aus, es wäre aber auch möglich Java-Funktionen zu nutzen.
Java:
SELECT id,name FROM users WHERE login=? AND passwort=?
Wenn ihr sowieso mit Oracle arbeitet, könntest du gleich den Oracle OID für den Login nutzen, das ist im Prinzip ein LDAP-Server. Frag mal bei euren Admins nach, ob der verfügbar ist.
 
Wie wir beide gleich sagten lasse es die DB machen.
Beim durchforsten von tausenden Einträgen wirst du mit deiner Liste nicht schneller sein.

Suche in der DB nach genau dem User Vor und Nachname oder Email Adresse was auch immer.

Dafür hat du ja eine DB.

Schaue wie das in SQL geht.
Wenn du mit eine DB arbeitest wirst du doch wohl die Grundlagen von SQL beherrschen
 

Zurück
Oben