Hallo zusammen.
Ich möchte gerne eine Klasse bauen, mit der ich Daten in eine Datenbank persistent speichern kann. Dazu habe ich eine Klasse geschrieben, die eine java.sql.Connection hält. Man kann mit dieser Verbindung suchen, updaten und einfügen. Das funktioniert auch prima. Leider werden Daten aber nicht für immer in die Datenbank eingefügt, sondern nur wenn ich Connection.close() aufrufe, ansonsten nur so lange die Verbindung steht. Aber ich kann ja nicht nach jedem Insert einmal die Verbindung schließen und dann mit DriverManager.getConnection(...) wieder eine neue Verbindung machen. Oder ist das gängige Praxis? Es muss doch möglich sein, dass ich die Verbindung bis zum Schluss halte und wenn das Object zerstört wird auch die Connection geschlossen wird. Wie würde ich so etwas denn programmieren? Muss ich dafür extra eine Methode close() schreiben und diese aufrufen bevor ein Objekt Test zerstört wird?
Danke!
Ich möchte gerne eine Klasse bauen, mit der ich Daten in eine Datenbank persistent speichern kann. Dazu habe ich eine Klasse geschrieben, die eine java.sql.Connection hält. Man kann mit dieser Verbindung suchen, updaten und einfügen. Das funktioniert auch prima. Leider werden Daten aber nicht für immer in die Datenbank eingefügt, sondern nur wenn ich Connection.close() aufrufe, ansonsten nur so lange die Verbindung steht. Aber ich kann ja nicht nach jedem Insert einmal die Verbindung schließen und dann mit DriverManager.getConnection(...) wieder eine neue Verbindung machen. Oder ist das gängige Praxis? Es muss doch möglich sein, dass ich die Verbindung bis zum Schluss halte und wenn das Object zerstört wird auch die Connection geschlossen wird. Wie würde ich so etwas denn programmieren? Muss ich dafür extra eine Methode close() schreiben und diese aufrufen bevor ein Objekt Test zerstört wird?
Java:
public class Test {
private Connection con = null;
private PreparedStatement insertStatement = null;
public Test() {
initConnection();
initStatements();
}
private void initConnection() {
try {
Class.forName("org.hsqldb.jdbcDriver");
con = DriverManager.getConnection("jdbc:hsqldb:file:XYZ", "NAME", "PW");
con.setAutoCommit(true);
} catch (Throwable e) {
// ...
}
}
private void initStatements() {
try {
insertStatement = con.prepareStatement("INSERT INTO test.test (id, name) VALUES (?, ?)");
} catch (SQLException e) {
// ...
}
}
public Status einfuegen (Test test) {
Integer id = test.getId();
String name = test.getName();
try {
insertStatement.setInt(1, id);
insertStatement.setString(2, name);
insertStatement.executeUpdate();
insertStatement.close();
con.close(); // das möchte ich hier nicht
} catch (SQLException e) {
return Status.NICHT_OK
}
return Status.OK;
}
}
Danke!
Zuletzt bearbeitet: