Datenbank-Tabelle in SWING/AWT ausgeben

Status
Nicht offen für weitere Antworten.

schneffi

Mitglied
Hallo Leute!

Mein Problem ist folgendes: Ich habe eine Datenbank, logischerweise sind da Tabellen drin. Nun ist die Aufgabe, eine dieser Tabellen auszugeben in einem neuen Fenster, und zwar mit Swing oder AWT.

Ich verwende NetBeans.

Muss ich eine komplett neue main-funktion anlegen, wo das neue Fenster aufgerufen wird?

Ich hab auch versucht, in den vorhandenen Quellcode das Fenster manuell zu erstellen, aber dort komme ich dann nicht weiter, wie ich das Fenster mit der Tabelle bzw. den Datenbankdaten füllen könnte.

Ich muss also auf einen Button klicken und mit Klick soll sich das neue Fenster öffnen. Wie geh ichs an?

Mein aktueller Stand der Dinge:

Java:
private void DBAnzeigenActionPerformed (java.awt.event.ActionEvent evt)
    {
        zeigeTabelle();

    }

    public void zeigeTabelle()
    {
        JFrame frame = new JFrame();
        frame.setVisible(true);
    }

So, damit wird das neue Fenster aufgerufen. Wie krieg ich dort die Tabelle rein?

Danke für Eure Hilfe!
 

kowa

Aktives Mitglied
Hallo,

wenn du ein neues Fenster haben willst dann erstelle eine neue Klasse mit JFrame ohne main Methode, die du dann aus dem Hauptprogramm mit new MeineTabelle(); aufrufst.

Für die Daten aus der Datenbank kannst du dann ein JTable nehmen.
 

schneffi

Mitglied
Hi kowa, danke für deine Antwort.

Das hab ich jetzt selbst auch so hinbekommen, irgendwie hab ich ganz vergessen, dass ich hier gefragt habe ;-)

Jedenfalls öffnet das Fenster und die Tabelle ist auch drin. Nun steh ich vorm größten Problem: die Daten in die Tabelle zu kriegen.

Ich hab was von einem TableModel gelesen...und übrigens das Tutorial von Sun über Tabellen hab ich auch bestimmt schon 30x gelesen aber ich werd daraus nicht schlau.

Soweit ich weiss MUSS ich ein TableModel anlegen, okay das verstehe ich noch. Und was mach ich dann damit? Wie krieg ich die Daten in die Tabelle?

Ich hab jetzt für das TableModel auch eine neue Klasse angelegt, ohne main-Funktion.
 

kowa

Aktives Mitglied
Hier ist ein Beispiel.

Du brauchst kein TableModel. Einfach ein String Array (wie im Beispiel) mit den Überschriften erstellen, dann ein Zwei-dimensionales Object-Array mit den Daten pro Reihe.

Also so die Überschriften:

Java:
String[] headers = {"title1", "title2", ...}

Und so die Daten:

Java:
Object[][] content = {{"content11", "content21"}, {"content12", "content22"}, {...}}

Das ganze dann einem JTable als Parameter übergeben, wie im Beispiel :)
 

schneffi

Mitglied
super, das hat funktioniert, danke :)

hatte jetz noch eine Frage, die sich aber mehr oder weniger von seblst gelöst hat,...aber glaubt mir, es kommen sicherlihc weitere ;-)

so..jetzt:

neues Objekt meiner Tabelle anlegen:

Java:
MyTable tabelle = new idics_db_access_v1.MyTable ( rowData );

Hab ich in meinen Frame gemacht wo vorher dies stand:

Java:
for (int c = 0; c < ((Object[]) rowData.get ( 0 )).length; ++c)
        {
            model.addColumn("Column " +Integer.toString(c));
        }

        for (int r = 0; r < rowData.size (); ++r)
        {
            model.addRow ( (Object[]) rowData.get ( r ));
        }
        table.setModel ( model );
        jScrollPane1.getViewport ().add ( table);

Bekomme jetzt einen Haufen Fehler, bzw Nullpointer Exceptions.
Überhaupt hab ich gar keinen Plan was ich heir eigetnlich mache.
 
Zuletzt bearbeitet:

schneffi

Mitglied
die NullpointerExceptions sind jetzt irgendwie weg, dennoch bekomme ich einen Fehler wegen einer fehlenden Variablen, die aber vorher da war. Könntet ihr bitte mal drüber schaun? Es ist alles ein wenig verworren, aber ich denke mal es ist so wie immer, dass es irgendwo ein Mini-Fehler ist den ich net finde.

Hauptklasse wo alles abläuft:
Java:
    private void VerbindenActionPerformed (java.awt.event.ActionEvent evt)                                          
    {                                              
        System.out.println("Verbinden");
        statusMessageLabel.setText ( "Verbinden...");
        verbinden();
    }
    public void verbinden()
        {
            try
            {
                Class.forName("org.postgresql.Driver" );
            }
            catch (ClassNotFoundException ex)
            {
                System.out.println(ex.getMessage());
                statusMessageLabel.setText ("Treiber nicht gefunden!");
            }

            try
            {
                conn = DriverManager.getConnection("...");

            }
            catch (Exception e)
            {
                System.out.println(e.getMessage ());
                statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            }
}                                         

    private void TrennenActionPerformed (java.awt.event.ActionEvent evt)                                        
    {                                            
        trennen();
        System.out.println("Getrennt");
        statusMessageLabel.setText("Verbindung trennen...");
    }                                       


    public void trennen()
    {
        try
        {
            conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Verbindung kann nicht getrennt werden!");
        }
    }

    private void DBAnzeigenActionPerformed (java.awt.event.ActionEvent evt)                                           
    {                                               
     zeigeTabelle();
    }                                          

    public void zeigeTabelle()
    {
       LinkedList bla = new LinkedList();
       Object[] dbdata;

       try
       {
           Statement stmt = conn.createStatement           (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
           ResultSet rs = stmt.executeQuery("SELECT * FROM st_user");
           ResultSetMetaData rsmd = rs.getMetaData();
           
                while (rs.next())
                {
//                  System.out.println ("Column Count" +rsmd.getColumnCount());
                    dbdata = new Object[rsmd.getColumnCount()+1];
                    for (int i = 1; i <= rsmd.getColumnCount(); i++)
                    {
                      dbdata [i-1] =   rs.getObject ( i );

                    }
                    bla.add ( dbdata);
//                    String name = rs.getString("bezeichnung");
//                    System.out.println("Name: " +name);
                }
           rs.close();
           stmt.close();
       }
       catch (Exception exce)
       {
           System.out.println(exce.toString());
       }
       MyTable table = new MyTable();
       showTableFrame tableframe = new showTableFrame(bla);
       tableframe.setVisible ( true);
       new showTableFrame(bla).setVisible(true);
    }

Hauptprogramm:

Java:
public class showTableFrame extends JFrame 
{
    private DefaultTableModel model = new DefaultTableModel();
    public showTableFrame(LinkedList rowData)      
    {   
        MyTable table = new MyTable(rowData);
        table.setModel ( model );
       jScrollPane1.getViewport ().add ( table);
       for (int c = 0; c < ((Object[]) rowData.get ( 0 )).length; ++c)
           {
               model.addColumn("Column " +Integer.toString(c));
           }

           for (int r = 0; r < rowData.size (); ++r)
           {
               model.addRow ( (Object[]) rowData.get ( r ));
            }
            table.setVisible(true);
//.....

In diese Klasse soll die Tabelle rein, daher hab ich sie schon reinkopiert. Allerdings findet er die Variable rowData nicht.

Java:
public class MyTable extends JTable

{
    private DefaultTableModel model = new DefaultTableModel();
    private JScrollPane jScrollPane1;

        public MyTable () //LinkedList rowData
        {
            MyTable table = new MyTable();
            table.setModel ( model );
            jScrollPane1.getViewport ().add ( table);
            for (int c = 0; c < ((Object[]) rowData.get ( 0 )).length; ++c)
            {
                model.addColumn("Column " +Integer.toString(c));
            }

            for (int r = 0; r < rowData.size (); ++r)
            {
                model.addRow ( (Object[]) rowData.get ( r ));
            }
            table.setModel ( model );
            jScrollPane1.getViewport ().add ( table);
            table.setVisible(true);
        }
}
 

schneffi

Mitglied
MyTable.java
Java:
/////////////////////
//DATENBANK-TABELLE//
/////////////////////

package idics_db_access_v1;


import javax.swing.table.*;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.util.LinkedList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.*;
import java.sql.*;

public class MyTable extends JTable

{
   private DefaultTableModel model = new DefaultTableModel();
   private JTable table = new JTable(model);

    public MyTable(LinkedList rowData)
    {
        for (int c = 0; c < ((Object[]) rowData.get ( 0 )).length; ++c)
        {
            model.addColumn("Column " +Integer.toString(c));
        }

        for (int r = 0; r < rowData.size (); ++r)
        {
            model.addRow ( (Object[]) rowData.get ( r ));
        }
        table.setModel ( model );


    }

}

GUI für die Tabelle (showTableFrame.java)
Java:
package idics_db_access_v1;

import javax.swing.*;
import javax.swing.table.*;
import java.util.*;

public class showTableFrame extends JFrame
{
        //private int rows = 3;
        //private int cols = 5;
        //private Object[] rowData = new Object[cols];
        private DefaultTableModel model = new DefaultTableModel();
        private JTable table = new JTable(model);

    public showTableFrame(LinkedList rowData)
    {
        initComponents();
        for (int c = 0; c < ((Object[]) rowData.get ( 0 )).length; ++c)
        {
            model.addColumn("Column " +Integer.toString(c));
        }

        for (int r = 0; r < rowData.size (); ++r)
        {
            model.addRow ( (Object[]) rowData.get ( r ));
        }
        table.setModel ( model );
        jScrollPane1.getViewport ().add ( table);
        
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setName("Form"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jTable1.setAutoCreateColumnsFromModel(false);
        jTable1.setModel(model);
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
    }// </editor-fold>

    public static void main(String args[])
    {
       /* JFrame tableframe = new showTableFrame();
        tableframe.setVisible ( true);*/
    }
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration
}


Haupt-GUI
Java:
package idics_db_access_v1;

import java.sql.*;
import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.*;

public class Idics_db_access_v1View extends FrameView {

    public Idics_db_access_v1View(SingleFrameApplication app) {
        super(app);

        initComponents();

        // status bar initialization - message timeout, idle icon and busy animation, etc
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                statusMessageLabel.setText("");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++) {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName)) {
                    if (!busyIconTimer.isRunning()) {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                } else if ("done".equals(propertyName)) {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                } else if ("message".equals(propertyName)) {
                    String text = (String)(evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                } else if ("progress".equals(propertyName)) {
                    int value = (Integer)(evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
    }

    @Action
    public void showAboutBox() {
        if (aboutBox == null) {
            JFrame mainFrame = Idics_db_access_v1App.getApplication().getMainFrame();
            aboutBox = new Idics_db_access_v1AboutBox(mainFrame);
            aboutBox.setLocationRelativeTo(mainFrame);
        }
        Idics_db_access_v1App.getApplication().show(aboutBox);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        Verbinden = new javax.swing.JButton();
        Trennen = new javax.swing.JButton();
        DBAnzeigen = new javax.swing.JButton();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        javax.swing.JMenu helpMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();

        mainPanel.setName("mainPanel"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(idics_db_access_v1.Idics_db_access_v1App.class).getContext().getResourceMap(Idics_db_access_v1View.class);
        Verbinden.setText(resourceMap.getString("Verbinden.text")); // NOI18N
        Verbinden.setName("Verbinden"); // NOI18N
        Verbinden.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                VerbindenActionPerformed(evt);
            }
        });

        Trennen.setText(resourceMap.getString("Trennen.text")); // NOI18N
        Trennen.setName("Trennen"); // NOI18N
        Trennen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TrennenActionPerformed(evt);
            }
        });

        DBAnzeigen.setText(resourceMap.getString("DBAnzeigen.text")); // NOI18N
        DBAnzeigen.setName("DBAnzeigen"); // NOI18N
        DBAnzeigen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DBAnzeigenActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addComponent(Verbinden, javax.swing.GroupLayout.PREFERRED_SIZE, 172, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(41, 41, 41)
                        .addComponent(Trennen, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                        .addComponent(DBAnzeigen)
                        .addGap(130, 130, 130))))
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                .addContainerGap(184, Short.MAX_VALUE)
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(Verbinden)
                    .addComponent(Trennen))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(DBAnzeigen)
                .addContainerGap())
        );

        menuBar.setName("menuBar"); // NOI18N

        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
        fileMenu.setName("fileMenu"); // NOI18N

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(idics_db_access_v1.Idics_db_access_v1App.class).getContext().getActionMap(Idics_db_access_v1View.class, this);
        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
        exitMenuItem.setName("exitMenuItem"); // NOI18N
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N
        helpMenu.setName("helpMenu"); // NOI18N

        aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
        aboutMenuItem.setName("aboutMenuItem"); // NOI18N
        helpMenu.add(aboutMenuItem);

        menuBar.add(helpMenu);

        statusPanel.setName("statusPanel"); // NOI18N

        statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N

        statusMessageLabel.setName("statusMessageLabel"); // NOI18N

        statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

        progressBar.setName("progressBar"); // NOI18N

        javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
        statusPanel.setLayout(statusPanelLayout);
        statusPanelLayout.setHorizontalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(statusMessageLabel)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 380, Short.MAX_VALUE)
                .addComponent(statusAnimationLabel)
                .addContainerGap())
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, statusPanelLayout.createSequentialGroup()
                .addContainerGap(223, Short.MAX_VALUE)
                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        statusPanelLayout.setVerticalGroup(
            statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(statusPanelLayout.createSequentialGroup()
                .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(statusMessageLabel)
                    .addComponent(statusAnimationLabel)
                    .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(3, 3, 3))
        );

        setComponent(mainPanel);
        setMenuBar(menuBar);
        setStatusBar(statusPanel);
    }// </editor-fold>

    Connection conn;
    private void VerbindenActionPerformed (java.awt.event.ActionEvent evt)
    {
        System.out.println("Verbinden");
        statusMessageLabel.setText ( "Verbinden...");
        verbinden();
    }

    public void verbinden()
    {
        try
        {
            Class.forName("org.postgresql.Driver" );
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

         try
        {
            conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/idics","","");

        }
        catch (Exception e)
        {
            System.out.println(e.getMessage ());
            statusMessageLabel.setText("Verbindung fehlgeschlagen!");
        }
}

    private void TrennenActionPerformed (java.awt.event.ActionEvent evt)
    {
        trennen();
        System.out.println("Getrennt");
        statusMessageLabel.setText("Verbindung trennen...");
    }


    public void trennen()
    {
        try
        {
            conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Verbindung kann nicht getrennt werden!");
        }
    }

    private void DBAnzeigenActionPerformed (java.awt.event.ActionEvent evt)
    {
     zeigeTabelle();
    }

    public void zeigeTabelle()
    {
       LinkedList bla = new LinkedList();
       Object[] dbdata;

       try
       {
           Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
           ResultSet rs = stmt.executeQuery("SELECT * FROM st_user");
           ResultSetMetaData rsmd = rs.getMetaData();

                while (rs.next())
                {
                    System.out.println ("Column Count" +rsmd.getColumnCount());
                    dbdata = new Object[rsmd.getColumnCount()];
                    for (int i = 1; i <= rsmd.getColumnCount(); i++)
                    {
                      dbdata [i-1] =   rs.getObject ( i );
                    }
                    bla.add ( dbdata);
                    String name = rs.getString("bezeichnung");
                    System.out.println("Name: " +name);
                }
           rs.close();
           stmt.close();
       }
       catch (Exception exce)
       {
           System.out.println(exce.toString());
       }
       JFrame tableframe = new showTableFrame(bla);
        tableframe.setVisible ( true);
    //new showTableFrame(bla).setVisible(true);
    }
    // Variables declaration - do not modify
    private javax.swing.JButton DBAnzeigen;
    private javax.swing.JButton Trennen;
    private javax.swing.JButton Verbinden;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    // End of variables declaration

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
}

mein Anliegen: die Tabellenstruktur soll in die Klasse MyTable.java

Frage: Wie verknüpfe ich die Abfragen mit Tabellenstruktur und GUI? Ist der Aufbau so okay oder sollte ich lieber nochmal umstrukturieren?

Es wäre echt nett wenn ihr mir ein paar Tipps geben könntet, ich bin eigentlich absoluter Java-Neuling und muss mich möglichst schnell in die Thematik reinarbeiten, leider ist der Java-Guru in meiner Firma zur Zeit nicht da und irgendwie muss ich mich da durchquälen :)
 

schneffi

Mitglied
so, ich bin jetzt schon ein ganzes Stückchen weiter gekommen (und mittlerweile weiss ich auch, was ich da gemacht habe ;-))

Ich hoffe es liest noch jemand mit?

Jedenfalls kommen jetz NullPointerExceptions und so richtig weiß ich jetzt wirklich nicht weiter.

Ich habe mein Programm in mehrere Klassen aufgeteilt:
ein Hauptprogramm (Aufruf des GUI)
eine GUI-Klasse (GUI-Befehle und Aufruf von Methoden durch ActionPerformed etc.)
eine Datenbank-Klasse (Die DB auslesen)
eine Tabellenklasse (Verbindung zur DB herstellen und die Tabellenstruktur festlegen)

Java:
////////////////////
//TABELLENKLASSE////
//TABELLENSTRUKTUR//
////////////////////

package idics_db_viewv3;

//Imports

public class MyTable extends JFrame
{
    MyDB meineDB = new MyDB();
    JFrame tableFrame = new JFrame();
    JPanel tablePanel = new JPanel();
    JScrollPane tableScrollPane = new JScrollPane();
    DefaultTableModel model = new DefaultTableModel();
    JTable MyTable = new JTable(model);
    LinkedList list = new LinkedList();
    Vector columnNames = new Vector();
    Vector data = new Vector();
    Object[] dbdata;
    
    public MyTable() 
    {   
        try
        {
        while (meineDB.rs.next ())
        {
            dbdata = new Object[MyDB.rsmd.getColumnCount()];
            for (int i = 1; i <= MyDB.rsmd.getColumnCount(); i++)
            {
               dbdata [i-1] = MyDB.rs.getObject ( i );
            }
            list.add ( dbdata);
            String name = MyDB.rs.getString("bezeichnung");
            System.out.println("Name: " +name);
        }
           
        //Anzahl Spalten
           int columns = MyDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);
           
         //Spaltennamen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( MyDB.rsmd.getColumnName ( i));
           }
           
         //Daten
           while (MyDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( row);
               }
           }
            MyDB.rs.close();
            MyDB.stmt.close();
        }
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }
        
        //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
        JTable meineTabelle = new JTable(data, columnNames);
        JScrollPane meinScrollPane = new JScrollPane(meineTabelle);
        Container contentPane = getContentPane();
        contentPane.add ( meinScrollPane);
        JPanel meinPanel = new JPanel ();
        contentPane.add (meinPanel, BorderLayout.SOUTH);
    }

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
            meineDB.conn = DriverManager.getConnection ( "","","");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }
        return true;
    }

    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            meineDB.conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }
};

Die Exception tritt in der MyTable.java genau hier auf:

Java:
while (meineDB.rs.next ())

nämlich wenn ich das ResultSet durchlaufen will.
Ich muss logischerweise erst ein MyDB-Objekt erzeugen, ehe ich das ResultSet durchlaufen kann. Das hab ich auch versucht, hat allerdings nicht funktioniert. Es kam nach wie vor die NullPointerException. Mir kommt es so vor, dass das ResultSet leer ist und er deswegen die Exception bringt.

Liegt es an der Reihenfolge? Hab ich hier wieder einen dummen Denkfehler? Ich denke mal was großes kann es nicht sein.

Java:
///////////////////
//DATENBANKKLASSE//
///////////////////

package idics_db_viewv3;

import java.sql.*;

public class MyDB
{
    static Connection conn = null;
    static ResultSet rs;
    static Statement stmt;
    static String sql;
    static ResultSetMetaData rsmd;

    public static void readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            rsmd = rs.getMetaData();
            sql = "SELECT * FROM st_user";
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(sql);      
        }
        catch (Exception exce)
        {
            System.out.println(exce.toString());
        }      
    }
}

Es wäre schön wenn sich jemand erbarmen könnte dieses Thema weiter zu verfolgen :)
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Der Code ist ja nicht gerade einfach zu lesen. Soweit ich das sehe ist das ResultSet nicht leer (das würde nichts ausmachen) sondern es ist null, deswegen auch die Exception. ich sehe nirgends den Aufruf der Methode readDB() in dem der ResultSet initialisiert wird.

Wieso erzeugst Du eigentlich ein Objekt von MyDB, wenn Du sowie so nur statische Variablen und Methoden hast bzw. warum machst Du da alles statisch?
 

schneffi

Mitglied
Der Code ist ja nicht gerade einfach zu lesen. Soweit ich das sehe ist das ResultSet nicht leer (das würde nichts ausmachen) sondern es ist null, deswegen auch die Exception. ich sehe nirgends den Aufruf der Methode readDB() in dem der ResultSet initialisiert wird.

Hm wie kann es null sein?

Aufruf der Methode readDB() hab ich jetzt hier eingefügt (hab nochmal ne neue Methode showTable() geschrieben in der Hoffnung es liegt daran, also nicht wundern.

Java:
public void showTable()
    {
        MyDB.readDB ();
        try
        {
        while (MyDB.rs.next ())
        {
            dbdata = new Object[MyDB.rsmd.getColumnCount()];
            for (int i = 1; i <= MyDB.rsmd.getColumnCount(); i++)
            {
               dbdata [i-1] = MyDB.rs.getObject ( i );
            }
            list.add ( dbdata);
            String name = MyDB.rs.getString("bezeichnung");
            System.out.println("Name: " +name);
        }

Wieso erzeugst Du eigentlich ein Objekt von MyDB, wenn Du sowie so nur statische Variablen und Methoden hast bzw. warum machst Du da alles statisch?

Statisch deshalb, weil ein Schlaumeier hier (im Büro) gesagt hat ich solle das besser machen, damit das ResultSet im Speicher bleibt. Ich dachte aber unter static versteht man etwas anderes.

Weil du meintest mein code wäre schwer zu lesen: ist er unübersichtlich? Kann man in der Hinsicht was verbessern? So bewandert bin ich doch in der Materie nun auch noch nicht..was die ganze Softwareentwicklung angeht. :)
 

Michael...

Top Contributor
Statisch deshalb, weil ein Schlaumeier hier (im Büro) gesagt hat ich solle das besser machen, damit das ResultSet im Speicher bleibt
Da würde ich mir die Frage stellen, will ich das überhaupt und habe ich etwas davon
Weil du meintest mein code wäre schwer zu lesen: ist er unübersichtlich? Kann man in der Hinsicht was verbessern?
Man könnte die graphischen Umfänge von den Datenbank Themen trennen.
Die Datenbank-Klasse kümmert sich um den Verbindungsaufbau/abbau und die Aufbereitung der Daten
Der Frame enthält die Table und deren Model und sagt der Datenbank-Klasse verbinde Dich zur Datenbank, gibt mir die Spaltennamen, gibt mir den Datensatz, beende die Verbindung
 

schneffi

Mitglied
Man könnte die graphischen Umfänge von den Datenbank Themen trennen.
Die Datenbank-Klasse kümmert sich um den Verbindungsaufbau/abbau und die Aufbereitung der Daten
Der Frame enthält die Table und deren Model und sagt der Datenbank-Klasse verbinde Dich zur Datenbank, gibt mir die Spaltennamen, gibt mir den Datensatz, beende die Verbindung

Das klingt logisch. Und wäre dann auch übersichtlicher. Danke.

Trotzdem ist da das Problem mit der Exception noch nicht geklärt :(
 

schneffi

Mitglied
In welcher Zeile tritt denn die Exception auf? Zeig doch mal die Ausgabe im Stacktrace.


tritt auf in Zeile 6 in der MyTable.java:

Java:
public void showTable()
    {
        MyDB.readDB ();
        try
        {
        while (MyDB.rs.next ())  //*****NULLPOINTEREXCEPTION*****
        {
            dbdata = new Object[MyDB.rsmd.getColumnCount()];
            for (int i = 1; i <= MyDB.rsmd.getColumnCount(); i++)
            {
               dbdata [i-1] = MyDB.rs.getObject ( i );
            }
            list.add ( dbdata);
            String name = MyDB.rs.getString("bezeichnung");
            System.out.println("Name: " +name);
        }

//Anzahl Spalten
           int columns = MyDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);

         //Spaltennamen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( MyDB.rsmd.getColumnName ( i));
           }

         //Daten
           while (MyDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( row);
               }
           }
            MyDB.rs.close();
            MyDB.stmt.close();
        }
        catch (SQLException sqle)
        {
            System.out.println(sqle);
        }

        //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
        JTable meineTabelle = new JTable(data, columnNames);
        JScrollPane meinScrollPane = new JScrollPane(meineTabelle);
        Container contentPane = getContentPane();
        contentPane.add ( meinScrollPane);
        JPanel meinPanel = new JPanel ();
        contentPane.add (meinPanel, BorderLayout.SOUTH);

        MyTable frame = new MyTable();
        frame.setDefaultCloseOperation (0);
        frame.pack ();
        frame.setVisible(true);
    }

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
           MyDB.conn = DriverManager.getConnection ( "jdbc:postgresql://localhost:5432/idics","idics_server","idicskannalles");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }

        return true;
    }


    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            MyDB.conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }
};


Die Exception:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
java.lang.NullPointerException
at idics_db_viewv3.MyTable.showTable(MyTable.java:32)
at idics_db_viewv3.Idics_db_viewV3View.jButton3ActionPerformed(Idics_db_viewV3View.java:236)
at idics_db_viewv3.Idics_db_viewV3View.access$1000(Idics_db_viewV3View.java:22)
at idics_db_viewv3.Idics_db_viewV3View$6.actionPerformed(Idics_db_viewV3View.java:141)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 

Michael...

Top Contributor
Ist ohne vollständigen Code schwer zu sagen woran das liegt.
Wird sonst noch was auf der Konsole ausgegeben?

Füge doch einfach mal vor der Zeile sowas wie
Java:
System.out.println(MyDB.conn==null);
System.out.println(MyDB.rs==null);
Was wird dann ausgegeben?
 

schneffi

Mitglied
beim ersten kommt: false
beim zweiten kommt: null

hiernochmal der vollständige Code:

Java:
////////////////////
//TABELLENKLASSE////
//TABELLENSTRUKTUR//
////////////////////

package idics_db_viewv3;

import java.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class MyTable extends JFrame
{
    JFrame tableFrame = new JFrame();
    JPanel tablePanel = new JPanel();
    JScrollPane tableScrollPane = new JScrollPane();
    DefaultTableModel model = new DefaultTableModel();
    JTable MyTable = new JTable(model);
    LinkedList list = new LinkedList();
    Vector columnNames = new Vector();
    Vector data = new Vector();
    Object[] dbdata;


    public void showTable()
    {
        MyDB.readDB ();
        //MyDB.rs=null;
        {
            try
            {
        System.out.println(MyDB.conn==null);
        System.out.println (MyDB.rs=null);
        while (MyDB.rs.next ())
        {
            dbdata = new Object[MyDB.rsmd.getColumnCount()];
            for (int i = 1; i <= MyDB.rsmd.getColumnCount(); i++)
            {
               dbdata [i-1] = MyDB.rs.getObject ( i );
            }
            list.add ( dbdata);

            String name = MyDB.rs.getString("bezeichnung");
            System.out.println("Name: " +name);
        }
        }

         catch (SQLException sqle)
        {
            System.out.println(sqle);
        }
        

        try{

        //Anzahl Spalten
           int columns = MyDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);

         //Spaltennamen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( MyDB.rsmd.getColumnName ( i));
           }

         //Daten
           while (MyDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( row);
               }
           }
            MyDB.rs.close();
            MyDB.stmt.close();
        }
        catch (Exception e)
        {
            System.out.println("superdoof" +e.toString ());
        }
       

        //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
        JTable meineTabelle = new JTable(data, columnNames);
        JScrollPane meinScrollPane = new JScrollPane(meineTabelle);
        Container contentPane = getContentPane();
        contentPane.add ( meinScrollPane);
        JPanel meinPanel = new JPanel ();
        contentPane.add (meinPanel, BorderLayout.SOUTH);

        MyTable frame = new MyTable();
        frame.setDefaultCloseOperation (0);
        frame.pack ();
        frame.setVisible(true);
    }
    }

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
           MyDB.conn = DriverManager.getConnection ( "jdbc:postgresql://localhost:5432/idics","idics_server","idicskannalles");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }

        return true;
    }


    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            MyDB.conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }
};

Java:
///////////////////
//DATENBANKKLASSE//
///////////////////

package idics_db_viewv3;

import java.sql.*;

public class MyDB
{
    static Connection conn;
    static ResultSet rs;
    static Statement stmt;
    static String sql;
    static ResultSetMetaData rsmd;

    public static boolean readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            rsmd = rs.getMetaData();
            sql = "SELECT * FROM ST_USER";
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(sql);
            rs.getStatement ( );
        }
        catch (Exception exce)
        {
            System.out.println(exce.toString());
        }
        return true;
    }
}
 

schneffi

Mitglied
Ist ohne vollständigen Code schwer zu sagen woran das liegt.
Wird sonst noch was auf der Konsole ausgegeben?

Füge doch einfach mal vor der Zeile sowas wie
Java:
System.out.println(MyDB.conn==null);
System.out.println(MyDB.rs==null);
Was wird dann ausgegeben?

okay, beim ersten kommt: false
beim zweiten kommt: true

demnach kann ich ja davon ausgehen, dass die Connection nicht aufgebaut ist
aber das ResultSet abgerufen werden kann.

Wie kann keine Verbindung bestehen? Aber hier jetzt der vollständige Code ;)

Java:
////////////////////
//TABELLENKLASSE////
//TABELLENSTRUKTUR//
////////////////////

package idics_db_viewv3;

import java.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class MyTable extends JFrame
{
    JFrame tableFrame = new JFrame();
    JPanel tablePanel = new JPanel();
    JScrollPane tableScrollPane = new JScrollPane();
    DefaultTableModel model = new DefaultTableModel();
    JTable MyTable = new JTable(model);
    LinkedList list = new LinkedList();
    Vector columnNames = new Vector();
    Vector data = new Vector();
    Object[] dbdata;

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
           MyDB.conn = DriverManager.getConnection ( "jdbc:postgresql://localhost:5432/idics","idics_server","idicskannalles");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }

        return true;
    }

    public void showTable()
    {
        try
        {
            System.out.println(MyDB.conn==null);
            System.out.println(MyDB.rs==null);
            while (MyDB.rs.next ())
            {
                dbdata = new Object[MyDB.rsmd.getColumnCount()];
                for (int i = 1; i <= MyDB.rsmd.getColumnCount(); i++)
                {
                    dbdata [i-1] = MyDB.rs.getObject ( i );
                }
                list.add ( dbdata);

                String name = MyDB.rs.getString("bezeichnung");
                System.out.println("Name: " +name);
            }
            }

         catch (SQLException sqle)
         {
            System.out.println(sqle);
         }
        
        try
        {
        //Anzahl Spalten
           int columns = MyDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);

         //Spaltennamen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( MyDB.rsmd.getColumnName ( i));
           }

         //Daten
           while (MyDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( row);
               }
           }
            MyDB.rs.close();
            MyDB.stmt.close();
        }
        catch (Exception e)
        {
            System.out.println("superdoof" +e.toString ());
        }

        //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
        JTable meineTabelle = new JTable(data, columnNames);
        JScrollPane meinScrollPane = new JScrollPane(meineTabelle);
        Container contentPane = getContentPane();
        contentPane.add ( meinScrollPane);
        JPanel meinPanel = new JPanel ();
        contentPane.add (meinPanel, BorderLayout.SOUTH);

        MyTable frame = new MyTable();
        frame.setDefaultCloseOperation (0);
        frame.pack ();
        frame.setVisible(true);
    }
    

    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            MyDB.conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }
};

Java:
///////////////////
//DATENBANKKLASSE//
///////////////////

package idics_db_viewv3;

import java.sql.*;

public class MyDB
{
    static Connection conn;
    static ResultSet rs;
    static Statement stmt;
    static String sql;
    static ResultSetMetaData rsmd;

    public static boolean readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            rsmd = rs.getMetaData();
            sql = "SELECT * FROM ST_USER";
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(sql);
        }
        catch (Exception exce)
        {
            System.out.println(exce.toString());
        }
        return true;
    }
}

Java:
public static void main(String[] args) 
    {
        //Laden der GUI
        launch(Idics_db_viewV3App.class, args);

        MyTable frame = new MyTable();
        frame.setDefaultCloseOperation (0);
        frame.pack ();
        frame.setVisible(true);
    }
 

schneffi

Mitglied
Nein die Verbindung ist aufgebaut, aber der ResultSet ist nich initialisiert - warum auch immer.

also ich hab jetzt mal spassenshabler nicht auf verbinden geklickt sondern gleich auf "Datenbank anzeigen", da kam bei beiden true raus

Das versteh ich nicht, vorher hat es auch funktioniert! Kann es irgendwas damit zu tun haben, wie ich die Tabelle lade? Als ich es in der Konsole ausgegeben habe, ging es!
 

Michael...

Top Contributor
Ehrlich gesagt steigt ich bei Deinem Code nicht so ganz durch ;-)
Probier mal folgendes bei Dir aus. Kann es mangels Treiber und Datenbankanbindung bei mir nicht testen. Vielleicht kannst Du ja darauf aufbauen.
Java:
import java.awt.*;
import java.sql.*;
import java.util.*;

import javax.swing.*;
import javax.swing.table.*;

public class DataBaseDemo  extends JFrame {
	private JTable table;
	private DefaultTableModel model;
	
	public DataBaseDemo() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(0, 0, 300, 500);
		this.setLocationRelativeTo(null);
		
		DataManager dm = new DataManager();
		model = new DefaultTableModel();
		if (dm.connect("jdbc:postgresql://localhost:5432/idics","idics_server","idicskannalles")) {
			Vector[] tableData = dm.loadData();
			model = new DefaultTableModel(tableData[0], tableData[1]);
			dm.disconnect();
		}
		table = new JTable(model);
		
		this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
	}
	
	public static void main(String[] args) {
		new DataBaseDemo().setVisible(true);
	}
}

class DataManager {
	private Connection con;
	private ResultSet rs;
	private ResultSetMetaData rsmd;
	
	public DataManager() {}
	
	public boolean connect(String url, String user, String pwd) {
        try {
			Class.forName("org.postgresql.Driver" ); 
	        System.out.println("Treiber geladen");
	        con = DriverManager.getConnection (url, user, pwd);
	        return true;
        }
        catch (Exception exc) {exc.printStackTrace();}
		return false;
	}
	
	public void disconnect() {
		try {
			con.close();
		}
		catch (Exception exc) {exc.printStackTrace();}
	}
	
	public Vector[] loadData() {
		Vector names = new Vector();
		Vector data = new Vector();
		Vector[] resultVector = new Vector[]{data, names};
		try {
			Statement stmt = con.createStatement();
			rs = stmt.executeQuery("SELECT * FROM st_user");
			rsmd = rs.getMetaData();
			int columns = rsmd.getColumnCount();
			for (int i=1; i<=columns; i++)
				names.addElement(rsmd.getColumnName(i));
			
			Vector row;
			while(rs.next()) {
				row = new Vector();
				for (int i=1; i<=columns; i++) {
					row.addElement(rs.getObject(i));
				}
				data.addElement(row);
			}
		}
		catch (Exception exc) {exc.printStackTrace();}
		return resultVector;
	}
}
 

schneffi

Mitglied
okay, also er bringt keine Fehler, was schonmal gut ist.
Allerdings zeigt er die Tabelle noch nicht an, aber ich denke mal, da muss ich das dann in einen neuen Frame laden.

Hab jetzt einen neuen Frame erzeugt und dort die Klasse reingetan. Werd nochmal alles in eine Datei tun, dann gucken was passiert, und wenn es funktioniert, werd ich das auf meine DB-Anwendung anwenden.

Danke schonmal :)
 

schneffi

Mitglied
Java:
public static boolean readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            sql = "SELECT * FROM ST_USER;";
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(sql);
            rsmd = rs.getMetaData(); 
        }
        catch (Exception exce)
        {
            System.out.println("readdb:"+exce.toString());
        }
        return true;
    }

Zeile 9 muss ganz unten hin, nicht ganz oben....da lag erstmal der Fehler. Also die DB-Verbindung funktioniert, jetzt bin ich wieder beim alten Thema, das ich diese verdammte Tabelle in den neuen Frame kriegen muss.

Aber ich danke dir erstmal für deine Hilfe, und ich werd auf jeden Fall deinen Vorschlag auch nochmal ausprobieren, das war ja ein bisschen anders als ich es hatte.
 

schneffi

Mitglied
So, an alle Mitleser, ich habe es immerhin geschafft die Spaltennamen anzuzeigen und die Tabelle im neuen Frame zu öffnen:

EDIT: Ich habs hinbekommen! Die Daten werden ausgelesen und in einem neuen Fenster ausgegeben. Der Rest ist nur noch Feinarbeit, d.h. Klassen ordnen, übersichtlich machen, Spaltengröße, Frameposition....

Danke an Michael... für die großartige Mithilfe :)


Java:
/////////////////
//HAUPTPROGRAMM//
/////////////////

package idics_db_viewv3;

import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;

public class Idics_db_viewV3App extends SingleFrameApplication {

    @Override protected void startup() {
        show(new Idics_db_viewV3View(this));
    }

    @Override protected void configureWindow(java.awt.Window root) {
    }

    public static Idics_db_viewV3App getApplication() {
        return Application.getInstance(Idics_db_viewV3App.class);
    }

    public static void main(String[] args) 
    {
        //Laden der GUI
        launch(Idics_db_viewV3App.class, args);
    }
}


Java:
////////////////////
//TABELLENKLASSE////
//TABELLENSTRUKTUR//
////////////////////

package idics_db_viewv3;

import java.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

public class MyTable extends JFrame
{
    //gehört zu siehe unten ***Ausgabe in Konsole***
    //LinkedList list = new LinkedList();
    Object[] dbdata;
    MyDB meineDB = new MyDB();

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
           meineDB.conn = DriverManager.getConnection ( "jdbc:postgresql://localhost:5432/idics","...","...");
           System.out.println ("Verbindung hergestellt!");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }
        return true;
    }

    public void showTable()
    {
       Vector columnNames = new Vector();
       Vector data = new Vector();

        //*******Auslesen der Datenbank*******//
        try
        {
            meineDB.readDB ();
        //Anzahl Spalten
           int columns = meineDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);

         //Spaltennamen auslesen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( meineDB.rsmd.getColumnName ( i));
           }
           System.out.println("Spaltennamen:" +columnNames);

           //Daten
           while (meineDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( meineDB.rs.getObject ( i )); 
               }
               data.addElement ( row );
           }
            meineDB.rs.close();
            meineDB.stmt.close();
        }
        catch (Exception e)
        {
            System.out.println(e.toString ());
        }

       //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
        JTable meineTabelle = new JTable(data,columnNames);
        JFrame frame = new JFrame();
        Container content = frame.getContentPane ();
        content.add ( new JScrollPane(meineTabelle));
        frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }

    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            meineDB.conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }
};


Java:
///////////////////
//DATENBANKKLASSE//
///////////////////

package idics_db_viewv3;

import java.sql.*;
import java.lang.Object;

public class MyDB
{
    Connection conn;
    ResultSet rs;
    Statement stmt;
    String sql;
    ResultSetMetaData rsmd;

    public boolean readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            sql = "SELECT * FROM st_user;";
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(sql);
            rsmd = rs.getMetaData();
        }
        catch (Exception exce)
        {
            System.out.println("readdb:"+exce.toString());
        }
        return true;
    }
}


Java:
////////////////////////
//GRAFISCHE OBERFLÄCHE//
////////////////////////
MyTable myTab = new MyTable();

    private void jButton3ActionPerformed (java.awt.event.ActionEvent evt)                                         
    {                                             
        myTab.showTable ();
    }                                        

    private void jButton1ActionPerformed (java.awt.event.ActionEvent evt)                                         
    {                                             
        myTab.verbinden();
    }                                        

    private void jButton2ActionPerformed (java.awt.event.ActionEvent evt)                                         
    {                                             
        myTab.trennen();
    }

(hier nur das, was wichtig ist, der Rest wird ja von NetBeans automatisch reingemacht)
 
Zuletzt bearbeitet:

schneffi

Mitglied
So, jetzt wollte ich alles noch ein bisschen ordnen, und sobald ich die methoden verbinden() und trennen() in meine Datenbankklasse schiebe, bekomme ich eine NullpointerException. Ich denke es liegt an meiner Tabellenklasse, aber nach einer Stunde debuggen mit wachsamem Auge konnte ich nichts finden :(


Tabellenklasse:

Java:
public class MyTable extends JTable
{
    Object[] dbdata;
    MyDB meineDB = new MyDB();

    //Achtung hier Übungscode
    public JTable autoResizeColWidth (JTable meineTabelle, DefaultTableModel model)
    {
            int margin = 5;
            try
            {
                for (int i = 0; i < meineDB.rsmd.getColumnCount (); i++)
                {
                    int vColIndex = i;
                    DefaultTableColumnModel colModel = (DefaultTableColumnModel) meineTabelle.getColumnModel ();
                    TableColumn col = colModel.getColumn(vColIndex);
                    int width = 0;

                    //Breite des Headers
                    TableCellRenderer renderer = col.getHeaderRenderer ();
                    if (renderer == null)
                    {
                        renderer = meineTabelle.getTableHeader ().getDefaultRenderer ();
                    }
                    Component comp = renderer.getTableCellRendererComponent (meineTabelle, col.getHeaderValue (), false, false, 0,0 );
                    width = comp.getPreferredSize ().width;

                    //max. Breite der Datensätze
                    for (int r = 0; r < meineTabelle.getRowCount (); r++)
                    {
                        renderer = meineTabelle.getCellRenderer ( r, vColIndex);
                        comp = renderer.getTableCellRendererComponent ( meineTabelle,
                            meineTabelle.getValueAt ( r, vColIndex ), false, false, r, vColIndex);
                        width = Math.max ( width, comp.getPreferredSize ().width);
                    }

                    //Rand hinzufügen
                    width += 2 * margin;

                    //Breite festlegen
                    col.setPreferredWidth ( width);
                }

                ((DefaultTableCellRenderer) meineTabelle.getTableHeader ().getDefaultRenderer ()).setHorizontalAlignment ( SwingConstants.LEFT );

                //meineTabelle.setAutoCreateRowSorter(true)
                meineTabelle.getTableHeader ().setReorderingAllowed (
                    false);

                for (int i = 0; i < meineDB.rsmd.getColumnCount (); i++)
                {
                    TableColumn column = meineTabelle.getColumnModel ().getColumn (
                        i);
                }
            }

                catch (Exception e)
                {
                    System.out.println("Fehler");
                }
            return meineTabelle;

public void showTable()
    {
       Vector columnNames = new Vector();
       Vector data = new Vector();
       DefaultTableModel model = new DefaultTableModel();
            
        try
        {
        //Anzahl Spalten
           int columns = meineDB.rsmd.getColumnCount();
           System.out.println ("Anzahl Spalten: " +columns);
        

         //Spaltennamen auslesen
           for (int i = 1; i <= columns; i++)
           {
               columnNames.addElement ( meineDB.rsmd.getColumnName ( i));
           }
           System.out.println("Spaltennamen:" +columnNames);

           //*******DAS NEUE FENSTER FÜR DIE TABELLE*******//
            JTable meineTabelle = new JTable(data,columnNames);
            meineTabelle = autoResizeColWidth(meineTabelle, model);
            meineTabelle.setAutoResizeMode ( JTable.AUTO_RESIZE_OFF);
            meineTabelle.setAutoCreateRowSorter ( true);
//            meineTabelle.setModel ( model);

            JFrame frame = new JFrame();
            frame.setSize ( 800, 500);
            frame.setLocation (200,300);
            Container content = frame.getContentPane ();
            content.setSize ( 800, 500);
            content.setLocation ( 200, 300);
            content.add ( new JScrollPane(meineTabelle));
            frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE);
            frame.pack();
            frame.setVisible(true);

            //*******Auslesen der Datenbank*******//

           //Daten
           while (meineDB.rs.next ())
           {
               Vector row = new Vector (columns);
               for (int i = 1; i <= columns; i++)
               {
                   row.addElement ( meineDB.rs.getObject ( i ));
               }
               data.addElement ( row );
           }

            meineDB.rs.close();
            meineDB.stmt.close();
        }
        catch (Exception e)
        {
            System.out.println(e.toString ());
        }       
    }

        }

Datenbankklasse:

Java:
package idics_db_viewv3;

import java.sql.*;

public class MyDB
{
    Connection conn;
    ResultSet rs;
    Statement stmt;
    String sql;
    ResultSetMetaData rsmd;

    //*******MIT DB VERBINDEN*******//
    public boolean verbinden()
    {
        //*******TREIBER LADEN*******//
        try
        {
            Class.forName("org.postgresql.Driver" );
            System.out.println("Treiber geladen");
        }
        catch (ClassNotFoundException ex)
        {
            System.out.println("Treiber nicht gefunden!");
            //statusMessageLabel.setText ("Treiber nicht gefunden!");
        }

        //*******MIT DB VERBINDEN*******//
        try
        {
           conn = DriverManager.getConnection ( "jdbc:postgresql://localhost:5432/idics","idics_server","idicskannalles");
           System.out.println ("Verbindung hergestellt!");
        }
        catch (SQLException sqlex)
        {
            System.out.println(sqlex.getMessage ());
            //statusMessageLabel.setText("Verbindung fehlgeschlagen!");
            System.out.println("DB nicht verfügbar");
        }
        return true;
    }

    //*******VON DB TRENNEN*******//
    public boolean trennen()
    {
        try
        {
            conn.close();
        }
        catch (Exception exs)
        {
            exs.printStackTrace();
            System.out.println("Keine Verbindung!");
        }
        return true;
    }

    public boolean readDB()
    {
        //*******DATENBANK-TABELLE AUSLESEN*******//
        try
        {
            sql = "SELECT id, revcuser, bezeichnung, mandant FROM st_user;";
            System.out.println("SELECT*FROM st_user;");

            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            System.out.println("stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ");

            rs = stmt.executeQuery(sql);
            System.out.println("rs=stmt.executeQuery(sql);");

            rsmd = rs.getMetaData();
            System.out.print ( "rsmd=rs.getMetaData();"); 
        }
        catch (Exception exce)
        {
            System.out.println("readdb:"+exce.toString());
        }
        return true;
    }
}

Unten raus kommt:

Treiber geladen
Verbindung hergestellt!
SELECT*FROM st_user;
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stmt.executeQuery(sql);
rsmd=rs.getMetaData();java.lang.NullPointerException

Also die Daten werden ausgelesen, das funktioniert. Ich denke das Problem liegt irgendwo in der Tabellenklasse. Kann es sein, dass die Tabellenklasse noch irgendein Parameter haben will, aber nichts übergeben bekommt von der Datenbankklasse?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Datenbank: Tabelle erstellen bei Web-Applikation Datenbankprogrammierung 4
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
L SQL Datenbank Tabelle erstellen Datenbankprogrammierung 6
J Oracle Datenbank-Tabelle per Combobox (oder ähnliches) auswählen Datenbankprogrammierung 3
J Aufbau meiner Datenbank/Tabelle - Verbessern? So lassen? Datenbankprogrammierung 39
J Tabelle synchronisieren mit Datenbank Datenbankprogrammierung 7
M Ausgabe in Tabelle der MySQL-Datenbank mit Java Datenbankprogrammierung 4
M Tabelle von einer Datenbank in eine Andere Datenbankprogrammierung 4
T Tabelle in datenbank einfügen Datenbankprogrammierung 2
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
MongoDB-Datenbank in Androidstudio einbinden Datenbankprogrammierung 1
thor_norsk Datenbank: Apache Derby Datenbankprogrammierung 6
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
M Datenbank mit REST API Datenbankprogrammierung 66
M Entfernte Datenbank Datenbankprogrammierung 11
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
M MySQL Datenbank in Array Datenbankprogrammierung 2
S Den letzten Eintrag aus Datenbank ziehen (Oracle SQL Dev.) Datenbankprogrammierung 14
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
raptorrs Plötzlich keine Verbindung zur Datenbank mehr möglich Datenbankprogrammierung 14
Davee SQLite SQLite Datenbank lässt sich nicht auf anderen PCs öffnen Datenbankprogrammierung 8
P Datenbank Tool - besser als oracle SQL Developer gesucht mit effizinte Verbindungsverwaltung Datenbankprogrammierung 2
X JPA (EclipseLink) und Oracle Datenbank Datenbankprogrammierung 2
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
L SQL Datenbank Datenbankprogrammierung 7
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
anton1 Online Datenbank Datenbankprogrammierung 7
krgewb H2-Datenbank öffnen Datenbankprogrammierung 8
J Datenbank abfragen Datenbankprogrammierung 6
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
Z Datenbank Choicebox wird nicht befüllt Datenbankprogrammierung 15
S Suche In SQL Datenbank mit array Datenbankprogrammierung 6
P Enum in der Datenbank Datenbankprogrammierung 1
Z SQL- Datenbank 1.PK zu 2.FK Datenbankprogrammierung 3
E netbeans - jsp Daten in Datenbank hinzufügen Datenbankprogrammierung 2
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
MiMa wo Datenbank verbinden/trennen? Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
DeltaPilot12 Datenbank connect Funktion Datenbankprogrammierung 7
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
J JAR-Datei und Datenbank Datenbankprogrammierung 8
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
Kirby.exe Zeile aus der Datenbank holen wenn ein match besteht Datenbankprogrammierung 7
Kirby.exe Es werden keine Einträge in der Datenbank gemacht Datenbankprogrammierung 23
C Datenbank anlegen und über eine Website mit Daten füllen? Datenbankprogrammierung 25
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
B Frage zu Datenbank Design bei Events (ZenDesk) Datenbankprogrammierung 1
M SQLite Datenbank mit SQLite Datenbankprogrammierung 7
C String in Datenbank einfügen Datenbankprogrammierung 11
C Keinen Zugrift auf Datenbank Datenbankprogrammierung 2
C Datenbank zugreifen Datenbankprogrammierung 10
L Auf Strato Datenbank zugreifen Datenbankprogrammierung 7
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
G Datenbank Statement Datenbankprogrammierung 22
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
S Datenbank MySQL und Java Datenbankprogrammierung 8
M H2 Verbindung zur Datenbank komplett schließen Datenbankprogrammierung 11
J Nur CRUD über Datenbank Klasse, oder auch mehr ? Datenbankprogrammierung 2
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
L Appabsturz mit Datenbank Datenbankprogrammierung 4
J Zahlungseingänge von mehreren Kunden wie am besten abbilden in der Datenbank ? Datenbankprogrammierung 8
L Datenbank sichern Datenbankprogrammierung 8
S Daten von SQLite Datenbank nutzen Datenbankprogrammierung 5
J Datenbank VPS Server Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
NIckbrick MySQL Befehle aus Datenbank auslesen Datenbankprogrammierung 21
S Datenbank/Java true/false Datenbankprogrammierung 8
J JUNIT und CRUD-Datenbank Datenbankprogrammierung 4
F Datenbank/Datenabgleich/Wiederholungsabfrage Datenbankprogrammierung 12
@SupressWarnings() Eure bevorzugte Datenbank-Library Datenbankprogrammierung 9
C datenbank verbindung config Datenbankprogrammierung 23
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
M Datenbank vor unerlaubtem Zugriff durch Benutzer schützen Datenbankprogrammierung 3
U MySQL Aus Servlet in Datenbank schreiben Datenbankprogrammierung 4
H Datenbank Export mit Java Datenbankprogrammierung 3
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
S SQL-Statement Datenbank Zeitbereich durchsuchen Datenbankprogrammierung 2
L Messenger App - Wie am besten auf Datenbank zugreifen? Datenbankprogrammierung 4
H MySQL Datenbank auf Xampp nimmt keine Mediumblob an. Datenbankprogrammierung 0
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
M portable Datenbank Datenbankprogrammierung 2
S Name aus der Datenbank bekommen Datenbankprogrammierung 2
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
MaxG. Datenbank werte vergleichen Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben