Guten Tag!
Ich habe momentan ein Problem in meinem "Progrämmchen"...
Also:
Ich möchte in einem Frame, der in zwei teilen geteilt ist, im oberen Teil vier
Tabellen aus der MySql-DB gleichzeitig anzeigen lassen um später aus den einzelnen
Tabellen ein Wert per Click auslesen und im unteren Teil in ein TextFeld reinzuschreiben.
Soweit sogut... Die Tabellen werden angezeigt, die Verbindung zur DB wird aufgebaut
aber, wenns um die Tabelleninhalte geht, bekomme ich ein Fehler, der so aussiet:
Könnte mir jemand mal sagen woran es liegen könnte?
Bin sehr dankbar für jede Hilfe!
Hier noch der Quellcode:
P.S. Nach ausprobieren habe ich gemerkt, dass ich kein resultSet zurückkriege...
liefert eine 0 zurück!
Sieht jemand vielleicht ein Fehler bei der DB-Abfrage?
Ich habe momentan ein Problem in meinem "Progrämmchen"...
Also:
Ich möchte in einem Frame, der in zwei teilen geteilt ist, im oberen Teil vier
Tabellen aus der MySql-DB gleichzeitig anzeigen lassen um später aus den einzelnen
Tabellen ein Wert per Click auslesen und im unteren Teil in ein TextFeld reinzuschreiben.
Soweit sogut... Die Tabellen werden angezeigt, die Verbindung zur DB wird aufgebaut
aber, wenns um die Tabelleninhalte geht, bekomme ich ein Fehler, der so aussiet:
Code:
java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.ResultSet.checkClosed(ResultSet.java:666)
at com.mysql.jdbc.ResultSet.getMetaData(ResultSet.java:3008)
at test1.Zuordung.showTableContent(Zuordung.java:261)
at test1.Zuordung.initialize(Zuordung.java:229)
at test1.Zuordung.<init>(Zuordung.java:122)
at test1.Zuordung$1.run(Zuordung.java:113)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Könnte mir jemand mal sagen woran es liegen könnte?
Bin sehr dankbar für jede Hilfe!
Hier noch der Quellcode:
Java:
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTable;
import java.awt.GridBagLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.JScrollPane;
import javax.swing.table.DefaultTableModel;
public class Zuordung extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JPanel eingabePanel = null;
private JPanel tabellenPanel = null;
private JScrollPane spUser = null;
private JScrollPane spPc = null;
private JScrollPane spLaptop = null;
private JScrollPane spMon = null;
private JTable tblUser;
private JTable tblPc;
private JTable tblLaptop;
private JTable tblMon;
private String qMon="SELECT * FROM monitorbestand ORDER BY 'MonitorSN(1)' ";
private String qUser="SELECT * FROM userzuordnung ORDER BY 'UserNR'";
private String qPc="SELECT * FROM pcbestand ORDER BY 'PCSN'";
private String qLap="SELECT * FROM laptopbestand ORDER BY 'LaptopSN'";
private Connection con = null;
private String user = "**********";
private String password = "***********";
private String driverClass = "org.gjt.mm.mysql.Driver";
private String dbUrl = "jdbc:mysql://***************/";
private String db ="***********";
private DatabaseMetaData dbmd = null;
private DefaultTableModel tblDataModelUser = null;
private Vector clmHeaderUser = null;
private Vector dataVectorUser = null;
private JPanel getEingabePanel() {
if (eingabePanel == null) {
eingabePanel = new JPanel();
eingabePanel.setLayout(new GridBagLayout());
}
return eingabePanel;
}
private JPanel getTabellenPanel() {
if (tabellenPanel == null) {
tabellenPanel = new JPanel();
tabellenPanel.setLayout(new GridLayout(2,2,2,2));
tabellenPanel.add(getSpUser());
tabellenPanel.add(getSpPc());
tabellenPanel.add(getSpLaptop());
tabellenPanel.add(getSpMon());
}
return tabellenPanel;
}
private JScrollPane getSpUser() {
if (spUser == null) {
spUser = new JScrollPane();
}
return spUser;
}
private JScrollPane getSpPc() {
if (spPc == null) {
spPc = new JScrollPane();
}
return spPc;
}
private JScrollPane getSpLaptop() {
if (spLaptop == null) {
spLaptop = new JScrollPane();
}
return spLaptop;
}
private JScrollPane getSpMon() {
if (spMon == null) {
spMon = new JScrollPane();
}
return spMon;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Zuordung thisClass = new Zuordung();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});
}
public Zuordung() {
super(" Zuordnung");
initialize();
}
private void verbingungAufbauen() {
System.out.println("Start");
System.out.println("Treiber laden");
try {
Class.forName(driverClass);
} catch (java.lang.ClassNotFoundException e) {
System.err.print("ClassNotFoundException: ");
System.err.println(e.getMessage());
}
// Verbindung zur Datenbank Aufbauen
try {
System.out.println("getConnection()");
con = DriverManager.getConnection(dbUrl, user, password);
System.out.println("executeQuery");
Statement stmt = con.createStatement();
stmt.execute("USE " + db);
dbmd = con.getMetaData();
System.out.println("finished\nConnection Aufgebaut");
} catch (SQLException sqle) {
sqle.printStackTrace();
System.err.println(sqle.getMessage());
}
}
private void initialize() {
this.setSize(1024, 950);
this.setContentPane(getJContentPane());
//tbl User initialisieren
tblLaptop = new JTable();
tblLaptop.setEnabled(true);
tblLaptop.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
" ", " ", " ", " "
}
));
tblLaptop.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
//tbl Mon initialisieren
tblMon = new JTable();
tblMon.setEnabled(true);
tblMon.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
" ", " ", " ", " "
}
));
tblMon.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
//tbl PC initialisieren
tblPc = new JTable();
tblPc.setEnabled(true);
tblPc.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
" ", " ", " ", " "
}
));
tblPc.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
//tbl User initialisieren
tblUser = new JTable();
tblUser.setEnabled(true);
tblUser.setModel(new DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
" ", " ", " ", " "
}
));
tblUser.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
// ViewPorts setzten
spPc.setViewportView(tblPc);
spUser.setViewportView(tblUser);
spLaptop.setViewportView(tblLaptop);
spMon.setViewportView(tblMon);
verbingungAufbauen();
showTableContent();
}
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setSize(500,500);
jContentPane.setLayout(new BorderLayout());
jContentPane.setPreferredSize(new Dimension(500, 500));
jContentPane.add(getEingabePanel(), BorderLayout.CENTER);
jContentPane.add(getTabellenPanel(), BorderLayout.NORTH);
}
return jContentPane;
}
private void showTableContent() {
if (con != null && dbmd != null) {
try {
Statement stmt = con.createStatement();
ResultSet rsUser = stmt.executeQuery(qUser);
ResultSet rsMon = stmt.executeQuery(qMon);
ResultSet rsPc = stmt.executeQuery(qPc);
ResultSet rsLap = stmt.executeQuery(qLap);
// inhalte User
tblDataModelUser = new DefaultTableModel();
clmHeaderUser = new Vector();
dataVectorUser = new Vector();
ResultSetMetaData rsmdUser = rsUser.getMetaData();
int clmCnt = rsmdUser.getColumnCount();
for (int i = 1; i <= clmCnt; i++){
clmHeaderUser.addElement(rsmdUser.getColumnName(i));
}
while (rsUser.next()) {
Vector rowVectorUser = new Vector();
for (int i = 1; i <= clmCnt; i++) {
rowVectorUser.addElement(rsUser.getString(i));
}
dataVectorUser.addElement(rowVectorUser);
}
tblDataModelUser.setDataVector(dataVectorUser, clmHeaderUser);
this.tblUser.setModel(tblDataModelUser);
this.tblUser.updateUI();
//Inhalte Mon
System.out.println("finished");
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
}
}
P.S. Nach ausprobieren habe ich gemerkt, dass ich kein resultSet zurückkriege...
Code:
rsUser.afterLast();
System.out.println("RS: "+rsUser.getRow());
Sieht jemand vielleicht ein Fehler bei der DB-Abfrage?
Zuletzt bearbeitet: