package src;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.io.File;
import java.io.PrintWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
/**
* Die Klass baut die Verbindung zur Datenbank auf und steuert Abfragen
* sowie Zugriffe.
*/
public class DatabaseConnection{
private Connection con;
private Statement stat;
private ResultSet rs;
private static final File file = new File(System.getProperty("user.home") +
File.separator + "MySQL.txt");
/**
* Erzeugt neue Instanz von DatabaseConnection und öffnet Verbindung zur DB.
*/
public DatabaseConnection() {
try {
// Erstellung eines Logs für alle Verbindungsvorgänge des SQL-Servers
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true)), true);
DriverManager.setLogWriter(out);
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql:///javachat?user=test?password=test");
if (!con.isClosed()) {
System.out.println("Verbindungsaufbau zu MySQL-Server erfolgreich...");
} else {
System.out.println("Verbindung zu MySQL-Server fehlgeschlagen");
}
stat = con.createStatement();
} catch (SQLException ex) {
// Errorhandling...
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (Exception e){
System.out.println(e);
}
}
/**
* Überprüft ob die Eingabe eines Users mit einem Eintrag in der Datenbank
* übereinstimmt.
* @param username Der vom User eingegebene Benutzername
* @param password Das vom User eingegebene Passwort
* @return true, wenn Eintrag gefunden wurde
*/
public boolean entryCheck(String username, String password){
boolean b = false;
try {
rs = stat.executeQuery("SELECT registration.Username, registration.Passwort" +
" FROM registration"+
" WHERE registration.Username = \"" + username + "\" AND "+
"registration.Passwort = \"" + password + "\";");
rs.next();
if (rs.getString(1) != null){
b = true;
}
} catch (SQLException sql){
return false;
}
return b;
}
/**
* Überprüft, ob der vom neuen User gewünschte Username schon vergeben ist.
* @param username der gewünschte Username
* @param password das gewünschte Passwort
* @return true, wenn Benutzername bereits vorhanden ist
*/
public boolean regCheck(String username, String password){
boolean b = false;
try {
rs = stat.executeQuery("SELECT registration.Username, registration.Passwort" +
" FROM registration"+
" WHERE registration.Username = \"" + username + "\";");
rs.next();
if (rs.getString(1) != null){
b = true;
}
} catch (SQLException sql){
return false;
}
return b;
}
/**
* Erstellt einen neuen Eintrag in der User-Datenbank.
* @param username neuer Benutzername
* @param password Passwort des neuen Benutzers
* @param sex Geschlecht des Benutzers
* @param date Eintragsdatum in die Datenbank (vom Server gesetzt)
*/
public void createEntry(String username, String password, char sex, String date){
try {
stat.execute("INSERT INTO registration VALUES (" + "\"" + username +
"\", \"" + password +
"\", \"" + sex + "\", \""
+ "n" + "\", \"" + date + "\");");
System.out.println("New User inserted: " + username);
} catch (SQLException sql){
System.out.println(sql);
}
}
}