ODP.NETでOracle XML DBを活用する:ODP.NETファーストステップ(4)(3/4 ページ)
Windowsプラットフォームにおけるアプリケーション開発は、.NETが主流となりつつある。本連載はVisual Basicから.NETへの移行を考えているOracleアプリケーション開発者に向けて、「Oracle Data Provider for .NET」を使うメリットや独自機能、新しいプログラミング・スタイルなどを解説する。(編集局)
OracleXmlStreamクラスでのXML文書の取得
OracleXmlStreamクラスは、OracleXmlTypeオブジェクトに格納された読み取り専用ストリームです(以下のコードのEmpXMLはOracleXmlTypeオブジェクトです)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
OracleXmlStreamクラスのReadメソッドを利用すると、指定されたデータ量を現在のXMLストリームのインスタンスから読み込み、配列バッファに移入します。Byte配列とChar配列に値を格納できます。
- Read(byte[ ], int, int)
このメソッドは、指定されたUnicodeのバイト数を現在のインスタンスから読み込み、ストリーム内の位置を進め、バイト配列バッファに移入します - Read(char[ ], int, int)
このメソッドは、指定された文字数を現在のインスタンスから読み込み、ストリーム内の位置を進め、文字配列バッファに移入します。
ExecuteXmlReaderを使用し、通常の表をXMLで取得
XMLTypeに格納されたXML文書を取得する以外にも、通常の表をXMLで取得することが可能です。OracleCommandのXmlCommandTypeプロパティを設定し、ExecuteXmlReaderメソッドを使用することにより、通常の表をXML文書として取得できます。ExecuteXmlReaderメソッドにより取得されたXMLは.NET Frameworkで提供されている、XmlReaderクラス/XmlDocumentクラスを利用して操作可能です。
実際のコードは以下のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記のコードのように、XmlCommandTypeプロパティがQueryの場合に、OracleCommandクラスで使用されるXMLプロパティをOracleXmlQueryPropertiesクラスで指定可能になります。
名前 | 説明 |
---|---|
MaxRows | 問い合わせの結果セットで結果のXML文書として表すことができる最大行数を指定 |
RootTag | 結果のXML文書のルート要素を指定 |
RowTag | 結果セットから作成されたXML文書のデータの行を識別するXML要素の値を指定 |
Xslt | XSLTを使用してXML変換に使用されるXSL文書を指定 |
XsltParams | XSL文書のパラメータを指定 |
表2 OracleXmlQueryPropertiesのプロパティ |
OracleXmlQueryPropertiesクラスのXsltプロパティを指定すると、取得したXML文書とXSL文書のスタイルシートを組み合わせ、整形化しHTMLとして出力可能です。OracleXmlQueryPropertiesクラスを利用したサンプルアプリケーションは、USのOTNサイトよりダウンロードできます。
通常の表をOracleデータベース上でXML文書に変換し、取得する方法
通常の表をExecuteXmlReaderを使用してXML文書に変換する方法とは別に、Oracle上でXML文書に変換した結果をOracleXmlTypeオブジェクトに格納することも可能です。以下にその手順を説明します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
XML文書に変換されたビューをOracleXmlTypeに取得するコードは以下のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
(次ページへ続く)
Copyright © ITmedia, Inc. All Rights Reserved.