DataTable in Java? (nicht JSF)

it-girl

Aktives Mitglied
Hallo zusammen,

ich schreibe gerade ein Visual Basic Programm in Java um. Das Programm greift unter anderem auf eine DB2-Tabenbank zu. In VB steht dann zB
Code:
Dim datatable As DataTable
(was soviel heißt wie
Code:
DataTable datatable;
, ist also eine Variablendeklaration).
Nun brauche ich genau sowas in "ganz normalem" Java (nicht JSF!).
Hab auch schon ein paar Sachen gefunden, aber leider finde ich nirgends die .jar-Files dazu, damit Eclipse beim import nicht meckert.

Gefunden habe ich zB:
  • org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable
  • org.jdesktop.dataset.DataTable
  • gov.sns.tools.data.DataTable

Kann mir da vielleicht jemand einen Link zu so einem .jar-File posten? Es muss nicht eines von den obigen sein, Hauptsache, es funktioniert und hat noch so was wie DataRow und DataColumn mit entsprechenden Methoden dabei.

Danke schon mal für eure Antworten.

LG it-girl
 
Zuletzt bearbeitet von einem Moderator:
Was möchtest du den machen? Die Tabelle in einer UI darstellen? Da würd ich normalerweise einfach ein Select ausfürhen und dann aus dem Resultset ein TableModel für eine JTable aufbauen.
 
Hi,

du verwechselst da etwas.

Eine JSF DataTable bzw. Eclipse DataTable hat nix mit einer .NET/VB DataTable zu tun.
Bei den ersten beiden geht es um Widgets, nämlich Tabellen in einer GUI.
Bei letzterem geht es um Datenbanktabellen 😉

Du willst wohl etwas wie ein RowSet, ist eher unüblich in Java, vielleicht hilft dir dieeses Tutorial: The JDBC Tutorial: Chapter 5 - Rowset Tutorial
 
@ fassy: Ich möchte die Tabellen an sich nicht darstellen, ich möchte nur SELECTs drauf ausführen und das Ergebnis in einer DataTable zwischenspeichern, sodass ich mit dieser neuen Tabelle weiterarbeiten kann.

@ Tomate_Salat:Guckst du hier :rtfm:http://msdn.microsoft.com/de-de/library/system.data.datatable(VS.80).aspx "Stellt eine Tabelle mit im Arbeitsspeicher befindlichen Daten dar."

@ maki: Ja und ich brauche was mit Datenbanktabellen. Kann man da denn nichts gleichwertiges in Java finden? Bzw. kann man RowSet damit vergleichen? Und warum ist das in Java unüblich? Danke für den Link, werd ihn mir gleich mal durchlesen.

Könnte man VB-DataTable nicht vielleicht auch mit Java-ResultSet vergleichen?
 
Könnte man VB-DataTable nicht vielleicht auch mit Java-ResultSet vergleichen?

Ich denke schon. ResultSet ist das, was du bei einer Abfrage zurück bekommst (siehe meinen oben geposteten Link)

[java=33]
ResultSet rs = stmt.executeQuery( "SELECT * FROM Customer" );
while ( rs.next() )
System.out.printf( "%s, %s, %s%n", rs.getString(1),
rs.getString(2), rs.getString(3) );
[/code]
 
In Java sieht man die Sache eher objektorientiert, d.h. ich hab im Speicher Objekte, die mit der DB synchronisiert werden, entweder direkt per JDBC/SQL, oder per ORM.
Das ist in .NET unüblich 😉
Da arbeitet man ohne große Abstraktion/OOAD direkt mit Datenbank Tabellen bzw. Zeilen, wie gesagt, das RowSet ist der DataTable am ähnlichsten, wird aber unter Java nicht oft benutzt.
Ein ORM, was eben nicht häufig anzutreffen ist in .NET, wäre zB. NHibernate oder das Entity Framework (falls das noch so heisst).

Man kann eben nicht einfach Programme 1:1 umschreiben, vor allem kein prozedurales VB Programm einfach mal so zu einem OO Java Programm machen in dem man nur ein paar Imports ändert 😉
 
Also das mit dem ResultSet klappt glaub ich ganz gut. Das entspricht nun in etwa der VB-DataTable.
Nun brauche ich aber noch etwas in Java, das in etwa einer VB-DataRow entspricht. Gibt es da auch was?

Infos zu VB-DataRow: "Stellt eine Datenzeile in einer DataTable dar." DataRow-Klasse (System.Data)
Demnach brauche ich etwas, das eine Zeile in einem ResultSet darstellt, falls das überhaupt möglich ist?

Liege ich richtig, dass ich eigentlich nicht wirklich eine "DataRow" brauche, sondern das auch anders lösen kann, zB neue Zeile hinzufügen mit
SQL:
INSERT INTO...
oder durchlaufen mit
Java:
ResultSet.next()
oder Inhalt ausgeben mit
Java:
System.out.println(ResultSet.getString/getInteger/...(int column));
Das müsste doch eigentlich auch gehen oder hat jemand eine bessere Lösung?

@ maki: Du hast Recht, das habe ich gar nicht bedacht, dass VB prozedural ist :autsch: Aber gut, dass du es sagst 😉
 
Nein, gibt es nicht. Am besten erstellst du dir selber eine Klasse die jeweils ein Row darstellt.
 
An der Stelle verweise ich nochmal auf die Insel. Über das ResultSet kannst du Zeilenweise das Ergebnis durchgehen. Mit getXXX kannst du dir den Wert zurückgeben lassen. Du musst keine indexzahlen nutzen, du kannst auch die column mitangeben: [c]getInt("id");[/c].

Hier findest du ein komplettes Beispiel zum Eintragen und Auslesen von Daten.
 

Neue Themen


Zurück
Oben