Hallo, ich habe mir eine kleine DatabaseHandler Klasse gebastelt. Ich wollte mich mit Datenbanken und außerdem mit Java 8 features beschäftigen, darum dachte ich mir, mache ich es mit Consumern. Außerdem bekomme ich jetzt kein ResultSet direkt zurück sondern muss das anders regeln.
Hier meine Klassen:
DatabaseHandler: https://hastebin.com/tixozobone.java
Main: https://hastebin.com/niziqeyari.coffeescript
Meine Fragen sind jetzt:
1.
Wie man im DatabaseHandler Zeile 85 und 98 sehen kann, benutze ich einen Consumer zum setzen der "?" im PreparedStatement. Aber kann man das auch anders lösen? Zum Beispiel mit einem "Object... array"? Ich benutze diesen MySql Connector (https://dev.mysql.com/downloads/connector/j/) der unterstützt .setObject() leider nicht. Hat da jemand eine Idee?
2.
Kann man es irgendwie schaffen, dass man den try{}catch(){}-Block NICHT innerhalb des Lambda-Ausdruckes hat? Weil eigentlich wollte ich das vermeiden, aber entweder bekomme ich ein ResultSet zurück, oder halt so :/
Danke!
PS: Hättet ihr noch Ideen diesen DatabaseHandler zu verbessern? Was würdet ihr ändern?
Was mir nicht gefällt ist der Aufruf der Funktion "DatabaseHandler.query(String,Consumer<PreparedStatement>,Consumer<ResultSet>)". Aber es geht halt einfacher so.
Hier meine Klassen:
DatabaseHandler: https://hastebin.com/tixozobone.java
Main: https://hastebin.com/niziqeyari.coffeescript
Meine Fragen sind jetzt:
1.
Wie man im DatabaseHandler Zeile 85 und 98 sehen kann, benutze ich einen Consumer zum setzen der "?" im PreparedStatement. Aber kann man das auch anders lösen? Zum Beispiel mit einem "Object... array"? Ich benutze diesen MySql Connector (https://dev.mysql.com/downloads/connector/j/) der unterstützt .setObject() leider nicht. Hat da jemand eine Idee?
2.
Kann man es irgendwie schaffen, dass man den try{}catch(){}-Block NICHT innerhalb des Lambda-Ausdruckes hat? Weil eigentlich wollte ich das vermeiden, aber entweder bekomme ich ein ResultSet zurück, oder halt so :/
Danke!
PS: Hättet ihr noch Ideen diesen DatabaseHandler zu verbessern? Was würdet ihr ändern?
Was mir nicht gefällt ist der Aufruf der Funktion "DatabaseHandler.query(String,Consumer<PreparedStatement>,Consumer<ResultSet>)". Aber es geht halt einfacher so.