Hallo,
undzwar bin ich gerade an einem Projekt mit Anbindung an eine MS Access Datenbank dran. Ich habe bisher sehr unsauber gearbeitet (alle Methoden in einer Klasse, also nicht nach MVC), da ich erstmal schnelle sichtbare Ergebnisse erzielen wollte. Nun möchte ich in einer Klasse eine Methode einer anderen Klasse aufrufen. Diese methode soll mir eine SELECT-Anweisung aus der MS Access Datebank ausführen und eine neue Tabelle in einem neuen Frame erstellen.
Ich habe schon im Netz gefunden, dass dies entweder mit static machbar ist. Dort erweitert er mir jedoch immer nur die Tabelle und erstellt keine neue Tabelle nach jedem Methodenaufruf. Mit invoke habe ich es auch schon probiert, bin aber auch da gescheitert, da (ich habe mehrere Methoden, u.a. auch welche, die einen return-Wert besitzen) die invoke-Zeile immer fehlerhaft war.
Hier mal Klasse 1, wo die Methode aufgerufen werden soll:
Hier Klasse 2, wo die Methode enthalten ist:
Bisher waren Aufruf und Methode in einer Klasse, möchte aber dies nun trennen, da ich alle DB-Methoden in einer separaten Klasse haben möchte. Kann mir da für den Aufruf jmd helfen, wie der Aufruf in Klasse 1 aussehen muss?
Vielen Dank schonmal!
undzwar bin ich gerade an einem Projekt mit Anbindung an eine MS Access Datenbank dran. Ich habe bisher sehr unsauber gearbeitet (alle Methoden in einer Klasse, also nicht nach MVC), da ich erstmal schnelle sichtbare Ergebnisse erzielen wollte. Nun möchte ich in einer Klasse eine Methode einer anderen Klasse aufrufen. Diese methode soll mir eine SELECT-Anweisung aus der MS Access Datebank ausführen und eine neue Tabelle in einem neuen Frame erstellen.
Ich habe schon im Netz gefunden, dass dies entweder mit static machbar ist. Dort erweitert er mir jedoch immer nur die Tabelle und erstellt keine neue Tabelle nach jedem Methodenaufruf. Mit invoke habe ich es auch schon probiert, bin aber auch da gescheitert, da (ich habe mehrere Methoden, u.a. auch welche, die einen return-Wert besitzen) die invoke-Zeile immer fehlerhaft war.
Hier mal Klasse 1, wo die Methode aufgerufen werden soll:
Java:
else if(source == quadrantB)
{
query = "Select * from Quadrant";
text = "Quadranten";
setCursor(new Cursor(Cursor.WAIT_CURSOR));
verbindeDB(text, query);
infoTextL.setText("Erfolgreich | Abruf der Quadranten aus Datenbank.");
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
Hier Klasse 2, wo die Methode enthalten ist:
Java:
public class DBConnection
{
private void verbindeDB(String text, String query)
{
String db;
String path;
Connection con;
Statement st;
ResultSet rs;
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
path = "H:/P2/Import/Lackbeschädigungen TEST.mdb";
db = "jdbc:ucanaccess://" + path;
con = DriverManager.getConnection(db);
st = con.createStatement();
rs = st.executeQuery(query);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
// Spaltennamen ermitteln
for (int i = 1; i <= columns; i++)
{
String colname = md.getColumnName(i);
colname = changeColumnName(colname);
columnNames.addElement(colname);
}
// Zeileninhalt ermitteln
while (rs.next())
{
Vector row = new Vector(columns);
for (int i = 1; i <= columns; i++)
row.addElement(rs.getObject(i));
data.addElement(row);
}
rs.close();
st.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
// Tabelle erzeugen
JTable table = new JTable(data, columnNames){
@Override
public boolean isCellEditable(int row, int column)
{
return false;
}
};
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Tabellenanpassung tca = new Tabellenanpassung(table);
tca.anpassungAllerSpalten();
JFrame frame = new JFrame (text);
JScrollPane pane = new JScrollPane(table);
frame.add(pane);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Bisher waren Aufruf und Methode in einer Klasse, möchte aber dies nun trennen, da ich alle DB-Methoden in einer separaten Klasse haben möchte. Kann mir da für den Aufruf jmd helfen, wie der Aufruf in Klasse 1 aussehen muss?
Vielen Dank schonmal!
Zuletzt bearbeitet von einem Moderator: