Hallo,
mal wieder ein Java-Problem.
Ich habe 2 Klassen:
- Menu
- MiniDataBaseApp
In Menu ist meine GUI, d.h. hier ist meine grafische Oberfläche, meine Objekte etc. Meine Liste wird also auch in Menu erstellt, was ich gerne auch so lassen würde.
Es soll aus der Klasse MiniDataBaseApp von Menu aus eine Datenbankverbindung aufgebaut werden und eine Tabelle ausgelesen werden, das klappt auch soweit.
Jetzt sollen allerdings die Ergebnisse der Abfrage als items in der Liste hinzugefügt werden und das will noch nicht so richtig..
Ich kann die Werte von MiniDataBaseApp, die ausgelesen wurden zwar in einem String über eine Methode in Menu übergeben und diese stimmen auch überein, wenn ich sie mit System.out.println ausgebe, aber wenn ich die Werte in der Methode in die Liste einfügen will, passiert nichts. Der Text wird weiterhin ausgegeben, keine Fehlermeldung, keine Liste..
Ich bin am verzweifeln, ich habe schon alles mögliche probiert und im Internet steht dazu auch nichts wirklich brauchbares.. nur das, was ich bereits probiert habe.
Klasse Menu
Spoiler anzeigen
Alles anzeigen
Klasse MiniDataBaseApp
Spoiler anzeigen
Alles anzeigen
(-> Zeile 39 & 41 sind entscheidend)
mal wieder ein Java-Problem.
Ich habe 2 Klassen:
- Menu
- MiniDataBaseApp
In Menu ist meine GUI, d.h. hier ist meine grafische Oberfläche, meine Objekte etc. Meine Liste wird also auch in Menu erstellt, was ich gerne auch so lassen würde.
Es soll aus der Klasse MiniDataBaseApp von Menu aus eine Datenbankverbindung aufgebaut werden und eine Tabelle ausgelesen werden, das klappt auch soweit.
Jetzt sollen allerdings die Ergebnisse der Abfrage als items in der Liste hinzugefügt werden und das will noch nicht so richtig..
Ich kann die Werte von MiniDataBaseApp, die ausgelesen wurden zwar in einem String über eine Methode in Menu übergeben und diese stimmen auch überein, wenn ich sie mit System.out.println ausgebe, aber wenn ich die Werte in der Methode in die Liste einfügen will, passiert nichts. Der Text wird weiterhin ausgegeben, keine Fehlermeldung, keine Liste..
Ich bin am verzweifeln, ich habe schon alles mögliche probiert und im Internet steht dazu auch nichts wirklich brauchbares.. nur das, was ich bereits probiert habe.
Klasse Menu
Java-Quellcode
- package knowledgebase;
- import java.sql.SQLException;
- /**
- *
- * @author Killian
- */
- public class Menu extends javax.swing.JFrame
- {
- public Menu()
- {
- initComponents();
- }
- public void setListItems(String items)
- {
- list1.add(items);
- System.out.println(items);
- }
- @SuppressWarnings("unchecked")
- // <editor-fold defaultstate="collapsed" desc="Generated Code">
- private void initComponents() {
- list1 = new java.awt.List();
- setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
- setTitle("Knowledge Base");
- setBackground(new java.awt.Color(255, 255, 255));
- javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
- getContentPane().setLayout(layout);
- layout.setHorizontalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(list1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 502, Short.MAX_VALUE))
- );
- layout.setVerticalGroup(
- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(list1, javax.swing.GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE)
- );
- pack();
- }// </editor-fold>
- public static void main(String args[])
- {
- try {
- for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
- if ("Nimbus".equals(info.getName())) {
- javax.swing.UIManager.setLookAndFeel(info.getClassName());
- break;
- }
- }
- } catch (ClassNotFoundException ex) {
- java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- } catch (javax.swing.UnsupportedLookAndFeelException ex) {
- java.util.logging.Logger.getLogger(Menu.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
- }
- //</editor-fold>
- java.awt.EventQueue.invokeLater(new Runnable()
- {
- public void run()
- {
- new Menu().setVisible(true);
- MiniDataBaseApp new_db = new MiniDataBaseApp();
- try
- {
- // Verbindung herstellen
- new_db.createConnection();
- // Ergebnisse anzeigen.
- new_db.createList("personen");
- // Verbindung schließen
- new_db.closeProgramm();
- }
- catch (SQLException e)
- {
- System.err.println("SQL Fehler - " + e.getLocalizedMessage());
- e.printStackTrace();
- }
- catch (ClassNotFoundException e)
- {
- System.err.println("Der Datenbank treiber wurde nicht gefunden. - " + e.getLocalizedMessage());
- e.printStackTrace();
- }
- }
- });
- }
- // Variables declaration - do not modify
- public java.awt.List list1;
- // End of variables declaration
- }
Klasse MiniDataBaseApp
Java-Quellcode
- package knowledgebase;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- /**
- *
- * @author Killian
- */
- public class MiniDataBaseApp
- {
- private String db_host = "localhost";
- private String db_port = "3306";
- private String db_user = "root";
- private String db_pass = "";
- private String db_base = "test";
- private static final String DRIVER = "com.mysql.jdbc.Driver";
- private Connection connection = null;
- public void createConnection() throws SQLException, ClassNotFoundException
- {
- Class.forName(DRIVER);
- String mySqlUrl = "jdbc:mysql://" + db_host + ":" + db_port + "/" + db_base;
- connection = DriverManager.getConnection(mySqlUrl, db_user, db_pass);
- }
- public void createList(String nameOfTable) throws SQLException
- {
- String query = "SELECT * FROM " + nameOfTable;
- Statement stmt = connection.createStatement();
- ResultSet rs = stmt.executeQuery(query);
- int columns = rs.getMetaData().getColumnCount();
- Menu menu1 = new Menu();
- menu1.setListItems("Test");
- System.out.println("Alle Einträge zu den Personen ");
- System.out.println();
- // Ich zeige die Tabellenspaltennamen an.
- for (int i = 1; i <= columns; i++)
- {
- System.out.print(rs.getMetaData().getColumnLabel(i) + "\t\t");
- }
- System.out.println();
- System.out.println();
- // Ich zeige den Inhalt der Tabelle an. Normaler Weise würde man die
- // Ergebnisse in eine Liste schreiben und diese zurück liefern.
- while (rs.next())
- {
- for (int i = 1; i <= columns; i++)
- {
- System.out.print(rs.getString(i) + "\t\t");
- }
- System.out.println();
- }
- rs.close();
- stmt.close();
- }
- public void closeProgramm() throws SQLException
- {
- this.connection.close();
- }
- public static void main(String[] args)
- {
- }
- }
(-> Zeile 39 & 41 sind entscheidend)