Hallo zusammen,
ich habe das Problem, dass mein Programm nach Datenbankanfrage eine Spalte zu viel in meinem JTabel anzeigt.
Die Datenbanksätze werden der Tabelle hinzugefügt.
Normalerweise sollten 4 Spalten zu sehen sein, jedoch wird eine leere 5. Spalte angezeigt, dessen Name "E" lautet.
Sowohl die Tabelle als auch die Datenbank besitzen beide jeweils nur 4 Spalten.
Ich kann den Fehler leider nicht finden und ihn daher auch nicht beheben.
Vielleicht kann mir jemand weiterhelfen?
Vielen Dank und liebe Grüße
ich habe das Problem, dass mein Programm nach Datenbankanfrage eine Spalte zu viel in meinem JTabel anzeigt.
Die Datenbanksätze werden der Tabelle hinzugefügt.
Normalerweise sollten 4 Spalten zu sehen sein, jedoch wird eine leere 5. Spalte angezeigt, dessen Name "E" lautet.
Sowohl die Tabelle als auch die Datenbank besitzen beide jeweils nur 4 Spalten.
Ich kann den Fehler leider nicht finden und ihn daher auch nicht beheben.
Vielleicht kann mir jemand weiterhelfen?
Vielen Dank und liebe Grüße
Java:
public class Startklasse {
JFrame jf;
JTable table;
DefaultTableModel dm;
java.sql.Statement stmt;
public static void main(String[] args) {
(new Startklasse()).start();
}
public void start(){
//Erstellung eines Frames
jf= new JFrame();
jf.setSize(1000, 700);
jf.setLayout(null);
jf.setResizable(false);
jf.setTitle("Intelligenter Kühlschrank");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Erzeugen einer neuen Tabelle
JTable table = new JTable();
//Festlegung der Anzahl der Spalten und deren Bezeichnung
Object[] columnNames = {
"Artikelnummer","Artikelbezeichnung","Menge","Mindestbestand"
};
//DefaultTableModel ist das Model, das wir später verwenden werden
dm = new DefaultTableModel();
dm.setColumnIdentifiers(columnNames);
table.setModel(dm);
//Eigenschaften für die Tabelle festlegen
table.setBackground(Color.LIGHT_GRAY);
table.setForeground(Color.WHITE);
Font font = new Font("SansSerif",1,22);
table.setFont(font);
table.setRowHeight(30);
//Ein Container, welcher mit einer Scrollbar ausgestattet wird. Die Tabelle wird dem ScrollPane hinzugefügt
JScrollPane pane= new JScrollPane(table);
pane.setBounds(50, 20, 880, 500);
//Die ScrollBar wird transparent gesetzt
pane.setOpaque(false);
pane.getViewport().setOpaque(false);
//Dem Frame wird der ScrollBar Container hinzugefügt
jf.add(pane);
jf.setVisible(true);
try
{
//Es wird versucht eine Verbindung zur Datenbank aufzubauen
load_con();
}
catch(Exception e) { e.printStackTrace(); }
}
private void load_con() throws Exception
{
//Die Anzahl der gezählten Zeilen wird auf 0 gesetzt
dm.setRowCount(0);
//Es wird eine Verbindung zur Datenbank aufgebaut
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/kühlschrankbestand?user=root&password=");
stmt=conn.createStatement();
try {
//Aus der Datenbank werden alle Artikel angezeigt, bei denen die Menge größer als 0 ist
ResultSet rs = stmt.executeQuery("SELECT * FROM inhalt where Menge>0");
//Im Objekt rsmd werden alle Informationen und Eigenschaften der Spalten gespeichert
ResultSetMetaData rsmd = rs.getMetaData();
//In der Variablen colNo wird die Anzahl der Spalten gespeichert
int colNo = rsmd.getColumnCount();
while(rs.next())
{
//Erzeugen eines Arrays vom Typ Object, welches genauso viele Felder hat wie das SQL-Ergebnis
Object[] objects = new Object[colNo];
//Erzeugen einer for Schleife, bei der die Variable i auf 0 gesetzt wird und solange i kleiner als die Variable colNo ist, soll i zunehmen
for(int i = 0; i < colNo; i++)
{
//Jedem Feld im Array wird ein Ergebnis zugewiesen
objects[i]=rs.getObject(i + 1);
}
dm.addRow(objects);
}
dm.addColumn(columnNames);
} catch (SQLException e) {
System.out.println("Fehler!");
}
}
}