# Daten aus Tabelle in einen Array



## Vril (9. Mai 2005)

Hallo,
da ich Daten aus Access in eine JTable schreiben möchte, muß ich die Daten ja erstmal in einen Array, alternativ in einen Vector schreiben, das klappt aber nicht so ganz.

Beim compilen gibt es keine Probleme, aber beim ausführen bekomme ich folgende Meldung auf die Konsole:
Ein Eintrag der Tabelle wird noch ausgegeben (System.out.println)... dann kommt aber folgende Fehlermeldung:
java.sql.SQLException: No data found

Was mache ich falsch?

```
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Tabelle extends JFrame {
public String text;
	
	public Tabelle(){
		super("Daten in Tabelle anzeigen");
		setSize(600,400);
		Connection con = null;
		Statement stmt = null;
				
		try {
			
			
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection("jdbc:odbc:sbdemo");
			stmt = con.createStatement();
					
			String leer = "     ";
			ResultSet rs = stmt.executeQuery(
				"SELECT  Name ,Preis FROM Pizzas");
					while (rs.next() ){
				String Namen = rs.getString(1);
				double Preis = rs.getDouble(2);
				System.out.println("Namen: "+Namen+" "+"Preis: "+Preis);
				String rowData[][]={ {rs.getString(1)}};
						
		}
		} catch (Exception e){
			System.err.println(e);
		}
	
	 	JTable table = new JTable();
					Container cp = getContentPane();
	      	cp.add(new JLabel("Speisekarte"), BorderLayout.NORTH);
	      	cp.add(new JScrollPane(table), BorderLayout.CENTER);
		
	}
	public static void main(String[] args){
		Tabelle frame = new Tabelle();
		frame.setLocation(100,100);
		frame.setVisible(true);
	}
}
```


----------



## bambi (10. Mai 2005)

Weiss auch nicht so recht, aber koennte es vielleicht am 

```
String rowData[][]={ {rs.getString(1)}};
```
liegen?

```
ResultSet rs = stmt.executeQuery(
   "SELECT  Name ,Preis FROM Pizzas");

String namen = null;
double preis = 0;
String rowData[][];

while (rs.next() )  {
   namen = rs.getString(1);
   preis = rs.getDouble(2);
   System.out.println("Namen: "+namen +" "+"Preis: "+preis );
   rowData[][] = { {namen}};
}
```

Nur so ein kleiner Tip  :wink: 
Variablennamen sollten immer klein geschrieben werden. In einer Schleife sollten keine neuen Instanzen
erzeugt werden (while (...) {String a = ...;} -> schlechte Performance)


----------



## Zilchinger (10. Mai 2005)

> rowData[][] = { {namen}};



Das Problem hier ist doch auch, das du den aktuellen namen immer an die Gleiche Stelle in das zweidim. Array schreibst.
Wenn Du also alle Datensätze in das Array eingetragen hast, dann steht irgendwie an der ersten Stelle, der letzte Datensatz. Alle anderen sind weg, oder sehe ich da was nicht  ???:L


----------



## bambi (10. Mai 2005)

Mmmhhh ja, das macht wirklich keinen Sinn. Du willst sicher sowas wie

```
int i = 0;
while (rs.next()) {
   rowData[i++][0] = name;
   ...
}
```


----------



## Vril (10. Mai 2005)

Danke für die Hilfe, ich hab mein Problem jetzt so gelöst:

```
import javax.swing.*;
import java.sql.*;

public class SimpleTable
{
public static String rowData[][]; 
  public static void main( String args[] )
  {  	
    Connection con = null;
		Statement stmt = null;
		Statement stmt1 = null;
	  try{
	  				
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
			con = DriverManager.getConnection("jdbc:odbc:sbdemo");
			stmt = con.createStatement();
			stmt1 = con.createStatement();
					
			String leer = "     ";
			ResultSet rs = stmt.executeQuery(
				"SELECT  Name ,Preis FROM Pizzas");
				
			ResultSet rs2 = stmt1.executeQuery (
	    "SELECT COUNT(*) FROM Pizzas");
	
	   rs2.next();	
	
	   int count = (int)rs2.getDouble (1);
	   
          rowData = new String[count][2];
          int c = 0;

				while (rs.next() ){
					
				String Namen = rs.getString(1);
				double Preis = rs.getDouble(2);
				System.out.println("Namen: "+Namen+" "+Preis);
			    		
				 rowData[c][0]= Namen;
				 rowData[c][1]= ""+Preis;
				 c++;
		    }         
	} catch (Exception e){
			System.err.println(e);
	}
	String columnNames[]={ "Name" , "Preis"};
    JTable table = new JTable( rowData, columnNames );
	  JFrame frame = new JFrame();
	  frame.setTitle("Speisekarte");
    frame.getContentPane().add( new JScrollPane(table) );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.pack();
    frame.setVisible( true );
  }
}
```


----------

