Hey Leute,
ich möchte ein Programm schreiben, welches Daten aus einer MySQL oder Access Datenbank liest. Dazu muss es sich mit der Datenbank verbinden, schreiben und lesen können. Ich habe bereits folgenden Post im Forum gelesen, welcher ähnlich zu meinem Problem ist, jedoch kann ich einige Dinge daraus nicht übernehmen: https://www.java-forum.org/thema/jdbc-verbindung-in-einer-funktion.91568/#post-580186
Nämlich werde ich die Abfragen (zum Beispiel beim Login) oft mit Preparedstatements machen (müssen?) und ich weiß noch nicht, wie oft ich ein Argument setzen muss. Deshalb ist eine funktion/Prozedur wie executeQuery des Posts oben wahrscheinlich nicht möglich. Ich habe deshalb die im Post beschriebene Prozedur connect() in eine Funktion umgewandelt, die einen Datentyp Connection zurückgibt.
Hier ein Teil des Codes aus der Login Klasse:
Und hier jetzt der Code aus der Database Klasse:
Jetzt meine Fragen:
1. Kann man eine Funktion schreiben für die Abfragen, auch wenn ich noch nicht weiß, wie oft ich statements setzen muss? Wenn dem so ist, kann ich die Funktion connect ja auch wieder in eine Prozedur umwandeln oder? Weil immer die ganzen Zeilen mit dem PreparedStatement zu schreiben ist ziemlich viel.
2. In anderen Klassen will ich genau auf die gleiche Datenbank zurückgreifen. Wäre es ratsam (und wenn ja wie?) auf Database 1 der Login Klasse zurückzugreifen oder muss ich ein neues Objekt erstellen?
Vielen Dank schonmal im Vorraus für eure Hilfe! Sind zwar Anfänger-Fragen, aber ich hoffe daraus viel zu lernen, da das das Grundgerüst meines Programmes bilden soll!
Viele Grüße
Tim
ich möchte ein Programm schreiben, welches Daten aus einer MySQL oder Access Datenbank liest. Dazu muss es sich mit der Datenbank verbinden, schreiben und lesen können. Ich habe bereits folgenden Post im Forum gelesen, welcher ähnlich zu meinem Problem ist, jedoch kann ich einige Dinge daraus nicht übernehmen: https://www.java-forum.org/thema/jdbc-verbindung-in-einer-funktion.91568/#post-580186
Nämlich werde ich die Abfragen (zum Beispiel beim Login) oft mit Preparedstatements machen (müssen?) und ich weiß noch nicht, wie oft ich ein Argument setzen muss. Deshalb ist eine funktion/Prozedur wie executeQuery des Posts oben wahrscheinlich nicht möglich. Ich habe deshalb die im Post beschriebene Prozedur connect() in eine Funktion umgewandelt, die einen Datentyp Connection zurückgibt.
Hier ein Teil des Codes aus der Login Klasse:
Code:
Database Database1 = new Database();
Connection connection = Database1.connect();
PreparedStatement st = (PreparedStatement) connection
.prepareStatement("SELECT Username, Password FROM userdata WHERE Username=? AND Password=?");
st.setString(1, userName);
st.setString(2, password);
//da müssen in der Zukunft wahrscheinlich noch mehr statement-setter rein. Ich weiß nicht wie viele, aber es werden auch nicht nur Strings sein.
ResultSet rs = st.executeQuery();
Database1.disconnect(connection, st, rs);
Und hier jetzt der Code aus der Database Klasse:
Code:
public class Database {
public static String mySqlConnect = "jdbc:mysql://";
public static String mySqlServer = "localhost:3306/";
public static String mySqlDataBase = "logintest";
public static String mySqlTime = "?serverTimezone=UTC";
public static String mySqlUsername = "...…………...…..";
public static String mySqlPassword = "...…...………...…...";
private static String DBurl;
Connection con;
Database() {
this.con = null;
}
public Connection connect() throws Exception {
DBurl = mySqlConnect + mySqlServer + mySqlDataBase + mySqlTime;
con = (Connection) DriverManager.getConnection(DBurl, mySqlUsername, mySqlPassword);
return con;
}
public void disconnect(Connection co, PreparedStatement stat, ResultSet res) throws Exception {
res.close();
stat.close();
co.close();
}
Jetzt meine Fragen:
1. Kann man eine Funktion schreiben für die Abfragen, auch wenn ich noch nicht weiß, wie oft ich statements setzen muss? Wenn dem so ist, kann ich die Funktion connect ja auch wieder in eine Prozedur umwandeln oder? Weil immer die ganzen Zeilen mit dem PreparedStatement zu schreiben ist ziemlich viel.
2. In anderen Klassen will ich genau auf die gleiche Datenbank zurückgreifen. Wäre es ratsam (und wenn ja wie?) auf Database 1 der Login Klasse zurückzugreifen oder muss ich ein neues Objekt erstellen?
Vielen Dank schonmal im Vorraus für eure Hilfe! Sind zwar Anfänger-Fragen, aber ich hoffe daraus viel zu lernen, da das das Grundgerüst meines Programmes bilden soll!
Viele Grüße
Tim