Weitere Grundlagen für Sybase XML

Die Klasse ResultSetXml ist eine generische Unterklasse der Klasse JXml. Diese Klasse ist dafür konzipiert, aus jedem gültigen SQL-Statement in jeder SQL-Tabelle ein XML-Ergebnisdokument zu erzeugen. Außerdem bietet sie Methoden zur Validierung des, für den Zugriff auf das und zur Aktualisierung des XML Result Set-Dokuments. Wir werden hier XML Result Sets mit der ResultSetXml Klasse erzeugen.

Der Quellcode und Javadoc für die ResultSetXml Klasse befinden sich im folgenden Sybase Server Verzeichnis (abhängig von der Plattform):


$SYBASE/ASE-12_5/sample/JavaSql (UNIX)
%SYBASE%ASE-12_5sampleJavaSql (Windows NT)

Erzeugen eines XML Result Sets
Für dieses Beispiel werden wir die Tabellen benutzen, die wir im letzten Artikel erstellt und ausgefüllt haben (Listing A).

Die SQL in (Listing B) erzeugt die mit den Beispieldaten zu verwendenden Tabellen. Sie enthält die Standard-SQL zum Ausfüllen der Tabelle Orders.

Das Beispiel in (Listing C) erzeugt eine SQL-Anweisung vom Client, das die Server-Tabellen, die wir in Listing A erzeugt haben, anfordert. Es verwendet dann die Constructor-Methode ResultSetXml, um ein ResultSetXml-Objekt zu erzeugen. Wir erzeugen dann eine Datei OrderResultSet.xml, die wir als nächstes betrachten werden. Im oben genannten Beispiel würden wir jdbc:default:connection als Login Information verwenden (oder das Feld einfach leer lassen), wenn wir das Code Fragment auf dem Server ausführen würden.

Das Dokument ResultSetXml, das wir erzeugt haben, enthält sowohl den Abschnitt ResultSetMetaData als auch den Abschnitt ResultSetData. Dieses Dokument ResultSetXml entspricht dem folgenden Format:


<?xml version="1.0"?>
<!DOCTYPE ResultSet SYSTEM 'ResultSet.dtd'>
<ResultSet>
<ResultSetMetaData>
...
</ResultSetMetaData>
<ResultSetData>
...
</ResultSetData>
</ResultSet>

Das vollständige Dokument, das in Listing D zu sehen ist, enthält das Dokument ResultSetXml (im Dateiordner OrderResultSet.xml), das von unserem Beispiel erzeugt wurde.

ResultMetaData, der erste Abschnitt eines ResultSetXml-Dokuments (Listing D), enthält die Informationen, die nicht direkt einer bestimmten Spalte zugeordnet sind, gefolgt von ColumnMetaData. Die Attribute von ColumnMetaData beziehen sich direkt auf die JDBC-Methoden der Klasse ResultMetaData . Der nächste Abschnitt, ResultSetData, enthält die tatsächlichen Zeilenelemente, von denen jedes die Namen und die Daten der Spaltenattribute enthält.

Die ResultSetXml-DTD
Die DTD (Dokumenttyp-Definition) ResultSet.dtd für das Dokument ResultSetXml in Listing E beschreibt unser ResultSetXml-Dokument.

Hier eine kurze Erläuterung der DTD in Listing E:

  • besagt, dass das ResultSetXml-Dokument einen äußeren ResultSet-Knoten mit zwei eingebetteten Knoten hat, ResultSetMetaData und ResultSetData.
  • besagt, dass der Abschnitt ResultSetMetaData über einen oder mehrere ColumnMetaData-Knoten verfügt (+ bedeutet einen oder mehr und ? bedeutet null oder mehr).
  • besagt, dass der Abschnitt ResultMetaData ein Attribut GetColumnCount hat, das dem/den Knoten ColumnMetaData vorausgeht.

Speicheroptionen
Für die Speicherung von ResultSetXML.xml verfügen wir über dieselben Optionen, die wir im vorangegangenen Artikel bei der OrderXML Custom-Klasse betrachtet haben. Element-, Dokument- und Hybridspeichertechnik sind möglich. In unserem nächsten Artikel werden wir näher auf diese Möglichkeiten eingehen.

Wie geht es weiter?
In unserem letzten Artikel haben wir die XML Speicher- und Auslesemöglichkeiten in Sybase ASE (Adaptive Server Enterprise) behandelt, die sich durch die Fähigkeit von ASE ergeben, Java Custom-Klassen zu verwenden. Wir haben die Klasse ResultSetXml untersucht und auch die DTD und das XML-Dokument, das sie beschreibt, und wir haben ein Code-Fragment untersucht, der aus einer einfachen SQL SELECT-Anweisung sowohl auf dem Client als auch auf dem Server ein ResultSetXml-Dokument erzeugt. Inzwischen ist wahrscheinlich klar geworden, dass das ResultSetXml-Dokument – anders als die OrderXml Klasse in unserem letzten Artikel – zur Beschreibung eines beliebigen Ergebnissatzes , aber nicht zur Erzeugung eingebetteter Knoten benutzt werden kann. Dies ist nur durch Erzeugung einer speziellen Java-Klasse möglich, die nur mit einem scharf umgrenzten Satz von Daten verwendet werden kann. Eine Custom-Klasse kann zum Anlegen von mehr als einer Dokumentenform verwendet werden. Dies ist ein weiterer Grund dafür, dass eine Java Virtual Machine auf dem Server so ein mächtiges Werkzeug ist.

Im nächsten Artikel untersuchen wir die Umsetzung von ResultSetXml sowohl auf dem Client als auch dem Server sowie den Zugriff auf die Spalten eines gespeicherten ResultSetXml-Dokuments mit der Document Storage Methode als Spalte einer SQL-Tabelle. Wir werden in nahezu der gleichen Art, wie man eine WHERE-Klausel in einer normalen SQL-Anweisung verwenden würde, auch einen quantitativen Vergleich mit der Dokumentenspeicher-Methode vornehmen.

ZDNet.de Redaktion

Recent Posts

Black Friday: Vorsicht vor schädlichen QR-Codes

Bösartige QR-Codes, die per E-Mail versendet werden, eignen sich sehr gut, um Spam-Filter zu umgehen.

1 Tag ago

Black Friday: Zahl der ominösen Shopping-Websites steigt

Unsichere Websites und Phishing-Mails in Verbindung mit Black Friday können kauffreudigen Konsumenten zum Verhängnis werden.

1 Tag ago

SmokeBuster bekämpft SmokeLoader

Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.

2 Tagen ago

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

2 Tagen ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

3 Tagen ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

3 Tagen ago