java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > Datenbankprogrammierung

Datenbankprogrammierung Fragen zur Anbindung und Programmierung von Datenbanken bzw. Datenbankabfragen

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 18.06.2009, 14:07   #1 (permalink)
Neuer Benutzer
Byte
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Datenbank-Tabelle in SWING/AWT ausgeben

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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
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!
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 18.06.2009, 23:32   #2 (permalink)
Benutzer
Byte
 
Benutzerbild von kowa
 
Registriert seit: 08.02.2008
Beiträge: 54
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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.
kowa ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 19.06.2009, 14:21   #3 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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.
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 19.06.2009, 18:33   #4 (permalink)
Benutzer
Byte
 
Benutzerbild von kowa
 
Registriert seit: 08.02.2008
Beiträge: 54
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
String[] headers = {"title1", "title2", ...}

Und so die Daten:

Java Code: Quelltext in neuem Fenster öffnen
1
Object[][] content = {{"content11", "content21"}, {"content12", "content22"}, {...}}

Das ganze dann einem JTable als Parameter übergeben, wie im Beispiel
kowa ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 22.06.2009, 11:02   #5 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
MyTable tabelle = new idics_db_access_v1.MyTable ( rowData );

Hab ich in meinen Frame gemacht wo vorher dies stand:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
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.

Geändert von schneffi (22.06.2009 um 11:47 Uhr)
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 22.06.2009, 14:33   #6 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
    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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 23.06.2009, 09:20   #7 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard jetzt nochmal von Anfang an

MyTable.java
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/////////////////////
//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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 10:58   #8 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard das gröbste ist geschafft

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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
////////////////////
//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 Code: Quelltext in neuem Fenster öffnen
1
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
///////////////////
//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

Geändert von schneffi (25.06.2009 um 11:02 Uhr)
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 11:40   #9 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
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?
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 11:46   #10 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
        }

Zitat: Michael...
Beitrag anzeigen
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.
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 11:56   #11 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
Zitat: schneffi
Beitrag anzeigen
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
Zitat: schneffi
Beitrag anzeigen
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
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 12:46   #12 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 13:04   #13 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
In welcher Zeile tritt denn die Exception auf? Zeig doch mal die Ausgabe im Stacktrace.
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 13:25   #14 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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)
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 13:51   #15 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
2
System.out.println(MyDB.conn==null);
System.out.println(MyDB.rs==null);
Was wird dann ausgegeben?
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 14:00   #16 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
beim ersten kommt: false
beim zweiten kommt: null

hiernochmal der vollständige Code:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
////////////////////
//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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
///////////////////
//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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 14:11   #17 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
Zitat: schneffi
Beitrag anzeigen
Java Code: Quelltext in neuem Fenster öffnen
1
        System.out.println (MyDB.rs=null);
muss heißen System.out.println(MyDB.rs==null);

Ist das Dein kompletter Code? Habe jetzt nirgends gefunden wo die Verbindung zur Datenbank aufgebaut wird, also den Aufruf von verbinden()
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 14:26   #18 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
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 Code: Quelltext in neuem Fenster öffnen
1
2
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
////////////////////
//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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
///////////////////
//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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 14:35   #19 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 17.02.2009
Beiträge: 2.608
Abgegebene Danke: 2
Erhielt 258 Danke für 258 Beiträge
Zitat: schneffi
Beitrag anzeigen
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.
Nein die Verbindung ist aufgebaut, aber der ResultSet ist nich initialisiert - warum auch immer.
Michael... ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.06.2009, 14:37   #20 (permalink)
Neuer Benutzer
Byte
Themenstarter
 
Registriert seit: 30.01.2009
Beiträge: 23
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Zitat: Michael...
Beitrag anzeigen
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!
schneffi ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tabelle von einer Datenbank in eine Andere Marie Curie Datenbankprogrammierung 4 14.01.2008 12:55
Datenbank Tabelle spiegeln PollerJava Allgemeine Java-Themen 22 30.11.2007 10:17
Warnkorb + Tabelle + Datenbank Tobias Köhler AWT, Swing & SWT 3 15.08.2007 08:22
XML-Spalte aus einer Datenbank ausgeben lassen Pareidolie Datenbankprogrammierung 0 08.03.2007 11:45
Tabelle in datenbank einfügen ttt Datenbankprogrammierung 2 08.02.2006 16:17


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:25 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de