The_Answer1985
Erfahrenes Mitglied
Hallo zusammen,
ich verzweifle gerade daran, eine JTable zu erzeugen. Ich sitz schon ne Weile davor, vllt erkenn ich deswegen den vermeintlichen Fehler nicht...evtl kann ihn ja jm. von euch entdecken
Und zwar folgendes:
Betroffen sind 3 Klassen.
Die Spalten und der SQL Query sind nicht null bzw. leer.
Danke für jeden Hinweis.
Liebe Grüße
ich verzweifle gerade daran, eine JTable zu erzeugen. Ich sitz schon ne Weile davor, vllt erkenn ich deswegen den vermeintlichen Fehler nicht...evtl kann ihn ja jm. von euch entdecken
Und zwar folgendes:
Betroffen sind 3 Klassen.
- Die erste Klasse ist ein Dialog bei dem aus einer Liste Tabellen aus einer Datenbank angezeigt werden können und mit Checkbox's die gewünschten Spalten selektiert werden. Diese gibt die Werte des Benutzers weiter an eine Klasse, die für den DB-Zugriff zuständig ist.
- Die Klasse DBZugriff wiederrum setzt ein SQL Stmt zusammen und füllt zwei Vectoren für die Tabelle: einen für die Spaltenbezeichnungen und den zweiten für die Werte
- die dritte Klasse empfängt aus der Klasse DBZugriff die Tabelle und soll diese nur anzeigen. Eben das Anzeigen funktioniert nicht, anstatt der Tabelle erhalte ich eine leere Fläche
Code:
public Vector<Vector<String>> leseDB(ArrayList<String> spalten, ArrayList<String> tabellen, String suchbegriff){
statement = null;
result = null;
StringBuilder select = null;
StringBuilder from = null;
StringBuilder where = null;
try
{
if(parent.serviceBewertung){
select = new StringBuilder("SELECT ");
for(int i = 0; i <= spalten.size(); i++){
if(i == spalten.size() - 1){
select.append(spalten.get(i) + " ");
}
else if(i < spalten.size() - 1){
select.append(spalten.get(i) + ", ");
}
}
from = new StringBuilder("FROM ");
for(int n = 0; n <= tabellen.size() - 1; n++){
if(n == tabellen.size() - 1){
from.append(tabellen.get(n) + "");
}
else{
from.append(tabellen.get(n) + ", ");
}
}
where = new StringBuilder(" WHERE ");
where.append(suchbegriff + " AND ");
for (int j = 0; j <= tabellen.size() - 1; j++){
if(j == tabellen.size() - 1){
where.append(tabellen.get(j - 1) + ".Kundennummer = " + tabellen.get(j)+ ".Kundennummer");
}
else{
where.append(tabellen.get(j) + ".Kundennummer = " + tabellen.get(j + 1) + ".Kundennummer" + " AND ");
}
}
}
else{
select = new StringBuilder("SELECT ");
for(int i = 0; i <= spalten.size(); i++){
if(i == spalten.size() - 1){
select.append(spalten.get(i) + " ");
}
else if(i < spalten.size() - 1){
select.append(spalten.get(i) + ", ");
}
}
from = new StringBuilder("FROM ");
from.append(tabellen.get(0));
from.append(" INNER JOIN ");
for(int n = 1; n <= tabellen.size() - 1; n++){
from.append(tabellen.get(n) + " ON (Kunde.Kundennummer = " + tabellen.get(n) + ".Kundennummer)");
if(n == tabellen.size() - 1){
from.append("");
}
else{
from.append(" INNER JOIN ");
}
}
where = new StringBuilder(" WHERE ");
where.append(suchbegriff + ";");
}
System.out.println(select.toString() + from.toString() + where.toString());
statement = connection.createStatement();
result = statement.executeQuery(select.toString() + from.toString() + where.toString());
if(result != null){
Vector<Vector<String>> results = new Vector<Vector<String>>();
java.sql.ResultSetMetaData rsmd = result.getMetaData();
x = rsmd.getColumnCount();
while(result.next()){
Vector<String> detail = new Vector<String>();
detail.add(String.valueOf(result.getInt("Kundennummer")));
detail.add(result.getString("Kundenname"));
detail.add(result.getString("Plz"));
detail.add(result.getString("Ort"));
detail.add(result.getString("EMail"));
results.add(detail);
}
meinModel.setDataVector(results, getBezeichnungen());
return results;
}
}
catch (SQLException ex1)
{
parent.fehlerBearbeitung(ex1.getMessage());
ex1.printStackTrace();
}
return null;
}
public javax.swing.JTable tabelleErzeugen(){
meineTabelle = new javax.swing.JTable(meinModel);
meineTabelle.setModel(meinModel);
return meineTabelle;
}
Die Spalten und der SQL Query sind nicht null bzw. leer.
Danke für jeden Hinweis.
Liebe Grüße