# [ORACLE] Ausgabe Tabelle im GUI



## Zweifellos (8. Feb 2010)

Guten Morgen,

am frühen morgen plage ich mich nun schon mit dem Problem rum, dass mein Programm mir die Daten, die bereits in die ORACLE-DB eingepflegt wurden, nicht ausgibt. Es werden lediglich die Meta-Daten dargestellt.

Hier deshalb einmal der Code:


```
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class ListAlben {
	JTable table2;
	JPanel panel;
	Object[][] data;
	static int colcnt;
	public static ResultSet resultatSet;
	static ResultSetMetaData rsmd;

	public static void showAlben() throws Exception {
		try {
			connect.connectIt();

			PreparedStatement preparedStatement = connect.connection
					.prepareStatement("select * from album where interpret=?");

			preparedStatement.setString(1, VerwaltungNeu.sucheAlbum2);

			resultatSet = preparedStatement.executeQuery();

		} catch (Exception ex) {
			System.out.println(ex);

		}
		rsmd = resultatSet.getMetaData();
		colcnt = rsmd.getColumnCount();

		Frame.frame();
		Frame.frame.setTitle("Meine Musik");
		Frame.frame.setSize(200, 200);
		Frame.frame.getContentPane().add(BorderLayout.NORTH,
				new JLabel(" Alle Alben von " + VerwaltungNeu.sucheAlbum2));

		JTable table = new JTable(daten2(), columnNames2());
		table.setPreferredScrollableViewportSize(new Dimension(450, 200));
		Frame.frame.add(new JScrollPane(table));

		JPanel panel2 = new JPanel();
		Frame.frame.getContentPane().add(BorderLayout.SOUTH, panel2);

		JButton zurueck = new JButton("Zurück");
		zurueck.addActionListener(new Action12Listener());
		panel2.add(zurueck);

		Frame.frame.pack();
		Frame.frame.setVisible(true);

	}

	public static Vector<String> daten2() throws Exception {
		Vector<String> data = new Vector<String>();
		Vector<String> rowA = new Vector<String>();

		while (resultatSet.next()) {

			for (int i = 0; i < colcnt; i++) {
				rowA.add(resultatSet.getString(i));
			}
			data.addAll(rowA);

		}
		return data;
	}

	public static Vector<String> columnNames2() throws Exception {
		Vector<String> columnNames = new Vector<String>();

		for (int i = 1; i < colcnt + 1; i++) {
			columnNames.add(rsmd.getColumnName(i));
		}
		return columnNames;
	}
}

class Action12Listener implements ActionListener {
	public void actionPerformed(ActionEvent event) {
		Frame.frame.dispose();
		VerwaltungNeu gui = new VerwaltungNeu();
		gui.createFrame();
	}
}
```


----------



## Zweifellos (8. Feb 2010)

Ich glaube, dass die while-Schleife in Zeile 68 nicht funktioniert, weiß aber nicht wieso... 
Kann mir hier jemand weiterhelfen?

LG


----------



## maki (8. Feb 2010)

Du überschreibst immer denselben Vector rowA.

Wenn du deinen Variablen und Methoden sinnvolle Namen gibst, findest du dich (und andere) besser im Code zurecht.


----------



## Zweifellos (8. Feb 2010)

Und was soll ich deiner Meinung nach machen, damit mein Programm nun auch die Tupel der Relationen ausgibt?

Den Tip mit den sinnvollen Namen nehme ich dankend an... Merke ich auch langsam


----------



## maki (8. Feb 2010)

Du musst in der while Schleife pro Iteration einen neuen Vector erzeugen mit new, sonst änderst du immer nur denselben


----------

