# Tabelle in Fenster anzeigen



## Java Rookie (6. Mai 2010)

Hallo Java Forum,

ich bin wie der Name schon sagt - leider - noch ein absoluter Anfänger. Daher entschuldige ich mich schon mal vorab schon mal für die bestimmt - für viele hier - dumme Frage.

Ich würde gerne wissen wie ich eine Tabelle in einem Fenster sichtbar machen kann. Die Tabelle wird dabei aus einer Access Datenbank importiert. Das importieren habe ich mitlerweile raus bekommen, aber alles andere, ein dickes Fragezeichen! Ich weiß auch, dass ich es mit AWT nicht darstellen kann, sondern die Swing Komponenten mit dabei haben muss. 

Meine Idealvorstellung wäre wie folgt:

- Connection Database "Access Datenbank"

- SQL Skript zum abfragen der Tabelle

- Abgefragte Felder in einem Fenster ausgeben

Ich habe hier das Buch "Java ist auch eine Insel", leider ist das einfach noch zu komplex für mich und auch so in dem Fall nicht dargestellt. Also ich komme eifach so nicht an die Lösung ran :-( Ich wäre auch überaus froh, wenn mir jemand eine geeignete Lektüre empfehlen könnte, womit ich hier die Lösung finden kann!

Vielen Dank vorab mit der Hoffnung auf helfende Antworten! :toll:

Java Rookie


----------



## F.S.WhiTeY (6. Mai 2010)

Hey,
erstmal: Dumme Fragen gibt es nicht. 

Um das zu realisieren was du vorhast. Bedarf es serstmal der Grundkenntnisse von SWING und seiner Componenten. 

dazu findest du hier mehr: Java Swing

Was dich am meisten interessieren sollte ist das javax.swing.JTextField, Damit realisiert man Textuelle ausgaben. 

HTH & viel spaß beim Swing lernen

WhiTeY


----------



## Michael... (6. Mai 2010)

Java Rookie hat gesagt.:


> Ich habe hier das Buch "Java ist auch eine Insel", leider ist das einfach noch zu komplex für mich und auch so in dem Fall nicht dargestellt.


JTable ist auch nicht unbedingt einfach.
Lösung:
- versuchen eine Tabelle mit Werten befüllen JavaInsel#JTable
- versuchen Daten aus einer Datenbank auszulesen und ausgeben JavaInsel#Schriitte zur Datenbankabfrage
- versuchen die aus der DB ausgelesenen Daten in einem geigneten Objekt zu speichern, damit die Tabelle was damit anfangen kann - wie, das bleibt dann Dir überlassen, da es hier unzählige Möglichkeiten gibt.


----------



## Java Rookie (6. Mai 2010)

Danke für die schnelle Antwort!

Ja die Komponenten von Swing sagen mir schon was. Nur ich habe noch nie ein Beispiel gesehen wo eine Importierte Tabelle!!! dargestellt wird. In allen Beispielen werden Tabellen selbst erstellt. Denke ich da zu kompliziert?!


----------



## derHuber (6. Mai 2010)

Hallo JavaRookie,

ich bin ebenfalls neu in Java und hab mich hiermit super in die JTables eingearbeitet:

http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/4841-jtable-ubersicht-teil-1-teil-8-a.html

vielleicht kann dir dieses Thema auch helfen:

http://www.java-forum.org/java-basics-anfaenger-themen/99915-liegt-fehler-jtable.html

viel Erfolg


----------



## Michael... (6. Mai 2010)

In dem Einfachbsp. der Javainsel werden die Werte einfach in ein verschachteltes String Array gepackt.
Jetzt könnstest Du Dir überlegen, wie Du das Ergebnis in ein solches String[][] bekommst. Ist zwar nicht unbedingt der schönste Weg, aber für'n Anfang der einfachste.
Wie weit bist Du den grundsätzlich mit den einzelnen Themen?


----------



## Java Rookie (6. Mai 2010)

Michael... hat gesagt.:


> JTable ist auch nicht unbedingt einfach.
> Lösung:
> - versuchen eine Tabelle mit Werten befüllen JavaInsel#JTable
> - versuchen Daten aus einer Datenbank auszulesen und ausgeben JavaInsel#Schriitte zur Datenbankabfrage
> - versuchen die aus der DB ausgelesenen Daten in einem geigneten Objekt zu speichern, damit die Tabelle was damit anfangen kann - wie, das bleibt dann Dir überlassen, da es hier unzählige Möglichkeiten gibt.



Hallo!

Dann hat es keinen Zweck, da bin ich noch vollkommen überfordert. Ich muss zugeben, dass ich es mir wesentlich einfacher vorgestellt habe. Ich habe gedacht, dass ich die Tabelle per SQL abfrage. Und diese Felder dann irgndwie in einem Frame ausgeben kann.

Also habe ich das jetzt richtig verstanden:

- Tabelle mit werten befüllen / Fällt weg, weil die Access Tabelle schon mit weten befüllt ist

- Tabelle aus Datenbank auslesen funktioniert

- Jetzt hängt es schon. Die Daten der Tabelle in einem Objekt speichern, da fängt es schon an knifflig für mich zu werden bzw. nicht machbar. 

Frage: Kein SQL? (ich liebe es )


----------



## Java Rookie (6. Mai 2010)

Michael... hat gesagt.:


> In dem Einfachbsp. der Javainsel werden die Werte einfach in ein verschachteltes String Array gepackt.
> Jetzt könnstest Du Dir überlegen, wie Du das Ergebnis in ein solches String[][] bekommst. Ist zwar nicht unbedingt der schönste Weg, aber für'n Anfang der einfachste.
> Wie weit bist Du den grundsätzlich mit den einzelnen Themen?



Wie schon gesagt, ich bin Anfänger. Ich habe gerade die AWT Programmierung durch, und komme jetzt zu Swing. Ich habe das mit den Arrays gesehen. Finde die Lösung aber nicht sehr schön, weil ich der Meinung bin das es doch einen Weg geben muss die Tabelle nach einer SQL Abrage in einem Objekt zu speichern und diese Werte dann in einer Tabelle in einem Frame darzustellen?! Na ja gut, vielleicht bin ich da auch vollkommen auf dem Holzweg?


----------



## Michael... (6. Mai 2010)

In dem einen Link von derHuber sind ja alle Möglichkeiten Daten in eine JTable zu bekommen beschrieben:JTable - Teil 2 - Wie kommen Daten in die Tabelle? - java-forum.org


----------



## Java Rookie (6. Mai 2010)

Ja nur der Bereich fällt ja weg, weil ich die Daten ja schon in einer Tabelle habe. Bei jeder Connection soll auf die Access Tabelle ja neu zugeriffen werden, bei jedem Auftruf des Programms.

public class JTableDemo{
    public static void main( String[] args ){
        // Die Daten für das Table
        String[][] data = new String[][]{
                {"a", "b", "c", "d"},
                {"e", "f", "g", "h"},
                {"i", "j", "k", "l"}
        };

        // Die Column-Titles
        String[] title = new String[]{
                "A", "B", "C", "D"
        };

Hiermit kann ich dann ja leider nichts anfangen. Und das ist mein Problem.


----------



## Michael... (6. Mai 2010)

Java Rookie hat gesagt.:


> Ja nur der Bereich fällt ja weg, weil ich die Daten ja schon in einer Tabelle habe.


Java kann mit Deiner Accesstabelle nichts anfangen. Du musst Deinem Programm explizit sagen, was in der Accesstabelle wie drin steht. Also brauchst du eine Connection baust mit dieser ein Statemtment oder PreparedStatement auf, führst es aus und bekommst im Gegenzug ein ResultSet, das die Datenenthält. Diese Daten steckst Du dann in ein [][] oder Vector oder sonstigen Container, mit dem Dein TableModel was anfangen kann.
Hier der erste Treffer mit google: JTable Access - Swing, Java2D/3D, SWT, JFace @ tutorials.de: Forum & Hilfe


----------



## Java Rookie (6. Mai 2010)

Danke! Das ist doch mal was zum einarbeiten!

Das werde ich morgen mal auseinander nehmen, und dann Rückinfo geben!

Vielen Dank!!!


----------



## Java Rookie (18. Mai 2010)

Hier mal meine Code für die Verbindung zu Access. Leider funktioniert es nicht, es kommt immer folgende Fehlermeldung:

"Der Datenquellenname wurde nicht gefunden, und es wurde kein Standarttreiber angegeben". Dabei habe ich eine Benutzer DSN im ODBC Datenquellen Administrator angegeben. Ich suche nun schon seit ewigkeiten nach dem Fehler, kann Ihn einfach nicht finden!

Datenbankname: Test.mdb
Tabellenname: fahrzeuge
Tabelleninhalte: Datum

Also ich bin wie immer, natürlich für jeden Tipp dankbar!!!


```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class AccessCon
{
 public static void main(String args[]) throws Exception{
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection c = DriverManager
   .getConnection("jdbc:odbc:Driver={Microsoft Access Driver(*.mdb)};DBQ= F:/fahrzeuge/Test.mdb");
   
   ResultSet rs= c.createStatement().executeQuery("SELECT Datum FROM fahrzeuge");
   
   while(rs.next())
   {
     System.out.println(rs.getString("Datum"));
   }
   rs.close();
   c.close();

 }
}
```


----------

