Hallo zusammen!
Ich bin Programmieranfänger und habe die Aufgabe ein kleines Spiel mit Login aus einer Datenbank zu programmieren. Der Datenbankzugriff funktioniert soweit. Wenn das DAO einen Eintrag mit passendem Namen und Passwort findet, soll es ein Objekt der Klasse Spieler(name,passwort) erstellen. Aber irgendwie komm ich nicht drauf, wie ich das hinbekomme. Ich wäre um jede Art der Hilfe dankbar!
Hier der Code meiner Spieler-Klasse:
[CODE lang="java" title="Spieler"]public class Spieler{//dem Spieler-Objekt wird eine ArrayList mit allen Spielern aus der Datenbank mitgegeben
private String name;
private String passwort;
public Spieler(String name, String passwort) {
this.name = name;
this.passwort = passwort;
}
}//Ende Klasse[/CODE]
Hier der Code meiner SQL_DAO -Klasse:
[CODE lang="java" title="SQL_DAO"]import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//DIESE KLASSE HOLT SICH DAS VON DB-CONNECTOR ERZEUGTE CONNECTOR-OBJEKT UND BIETET SQL-ABFRAGEMETHODEN, DIE DER CONTROLLER NUTZEN KANN
public class SQL_DAO {
private Connection meineConnection;
//private Spieler spieler;
public SQL_DAO() {
meineConnection = DB_Connector.holeEinzigesDBObjekt();
}
//TODO Hier folgen die SQL-Befehle in Methoden, die der Controller verwenden kann
//getSpielerFromDB bekommt 2 Parameter von den getter-Methoden der LoginGUi mit und setzt, nachdem eine SQLQuery durchgeführt wurde next() auf true oder false.
public Spieler getSpielerFromDB(String Name, String Passwort) throws SQLException {//----------------------------------> was ist hier los?
String query = "SELECT * FROM VierGewinntLogin WHERE Name=" + "'" + Name + "'" + "AND Passwort=" + "'" + Passwort + "'";
//SELECT 'Name','Passwort' FROM 'users' WHERE 'Name' = ? AND 'Passwort' = ?
//Das Statement-Objekt braucht man für die Datenbankabfrage
Statement stmt = meineConnection.createStatement();
//Die Methode executeQuery(query) erzeugt ein Objekt rs der Klasse ResultSet, das die Ergebisse der DB-Abfrage enthält
ResultSet rs = stmt.executeQuery(query);
Spieler spieler = new Spieler(Name, Passwort);
spieler.add(rs.getString(2), rs.getString(3));
//rs ist wie eine Tabelle, diese kann eben wie eine Tabelle durchlaufen werden. Der Befehl dafür ist next().
//Eine if-Bedingung reicht, da ja eh nur ein Spieler gesucht wird. Falls dieser gefunden wurde ist next() == true
if(rs.next()==true) {
System.out.println("Login erfolgreich");
return spieler;
//Daten aus rs herausholen und Spieler erzeugen und returnen;
//return Spieler();
}else {
System.out.println("Login gescheitert");
}
rs.close();
stmt.close();
return null;
}//Ende Methode getSpielerFromDB
}//Ende Klasse[/CODE]
Ich bin Programmieranfänger und habe die Aufgabe ein kleines Spiel mit Login aus einer Datenbank zu programmieren. Der Datenbankzugriff funktioniert soweit. Wenn das DAO einen Eintrag mit passendem Namen und Passwort findet, soll es ein Objekt der Klasse Spieler(name,passwort) erstellen. Aber irgendwie komm ich nicht drauf, wie ich das hinbekomme. Ich wäre um jede Art der Hilfe dankbar!
Hier der Code meiner Spieler-Klasse:
[CODE lang="java" title="Spieler"]public class Spieler{//dem Spieler-Objekt wird eine ArrayList mit allen Spielern aus der Datenbank mitgegeben
private String name;
private String passwort;
public Spieler(String name, String passwort) {
this.name = name;
this.passwort = passwort;
}
}//Ende Klasse[/CODE]
Hier der Code meiner SQL_DAO -Klasse:
[CODE lang="java" title="SQL_DAO"]import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//DIESE KLASSE HOLT SICH DAS VON DB-CONNECTOR ERZEUGTE CONNECTOR-OBJEKT UND BIETET SQL-ABFRAGEMETHODEN, DIE DER CONTROLLER NUTZEN KANN
public class SQL_DAO {
private Connection meineConnection;
//private Spieler spieler;
public SQL_DAO() {
meineConnection = DB_Connector.holeEinzigesDBObjekt();
}
//TODO Hier folgen die SQL-Befehle in Methoden, die der Controller verwenden kann
//getSpielerFromDB bekommt 2 Parameter von den getter-Methoden der LoginGUi mit und setzt, nachdem eine SQLQuery durchgeführt wurde next() auf true oder false.
public Spieler getSpielerFromDB(String Name, String Passwort) throws SQLException {//----------------------------------> was ist hier los?
String query = "SELECT * FROM VierGewinntLogin WHERE Name=" + "'" + Name + "'" + "AND Passwort=" + "'" + Passwort + "'";
//SELECT 'Name','Passwort' FROM 'users' WHERE 'Name' = ? AND 'Passwort' = ?
//Das Statement-Objekt braucht man für die Datenbankabfrage
Statement stmt = meineConnection.createStatement();
//Die Methode executeQuery(query) erzeugt ein Objekt rs der Klasse ResultSet, das die Ergebisse der DB-Abfrage enthält
ResultSet rs = stmt.executeQuery(query);
Spieler spieler = new Spieler(Name, Passwort);
spieler.add(rs.getString(2), rs.getString(3));
//rs ist wie eine Tabelle, diese kann eben wie eine Tabelle durchlaufen werden. Der Befehl dafür ist next().
//Eine if-Bedingung reicht, da ja eh nur ein Spieler gesucht wird. Falls dieser gefunden wurde ist next() == true
if(rs.next()==true) {
System.out.println("Login erfolgreich");
return spieler;
//Daten aus rs herausholen und Spieler erzeugen und returnen;
//return Spieler();
}else {
System.out.println("Login gescheitert");
}
rs.close();
stmt.close();
return null;
}//Ende Methode getSpielerFromDB
}//Ende Klasse[/CODE]