OracleXmlQueryProperties
オブジェクトは、XmlCommandType
プロパティがQuery
である場合に、OracleCommand
クラスにより使用されるXMLプロパティを表します。
クラスの継承
System.Object
System.OracleXmlQueryProperties
宣言
public sealed class OracleXmlQueryProperties : ICloneable
要件
プロバイダ | ODP.NET管理対象外ドライバ |
アセンブリ | Oracle.DataAccess.dll |
ネームスペース | Oracle.DataAccess.Client |
.NET Framework | 3.5, 4.0, 4.5 |
スレッド安全性
パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。
備考
OracleXmlQueryProperties
は、OracleCommand
クラスのXmlQueryProperties
プロパティを使用してアクセスおよび変更できます。各OracleCommand
オブジェクトには、XmlQueryProperties
プロパティに、OracleXmlQueryProperties
クラスの独自のインスタンスが含まれます。
OracleXmlQueryProperties
の新規インスタンスを取得するには、デフォルトのコンストラクタを使用します。OracleXmlQueryProperties
.Clone()
メソッドを使用して、OracleXmlQueryProperties
インスタンスのコピーを取得します。
例
この例では、リレーショナル・データがXMLで取得されます。
// C# using System; using System.IO; using System.Data; using System.Xml; using System.Text; using Oracle.DataAccess.Client; class OracleXmlQueryPropertiesSample { static void Main() { int rows = 0; StreamReader sr = null; // Define the XSL document for doing the transform. string xslstr = "<?xml version='1.0'?>\n" + "<xsl:stylesheet version=\"1.0\"" + " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" + " <xsl:output encoding=\"utf-8\"/>\n" + " <xsl:template match=\"/\">\n" + " <EMPLOYEES>\n" + " <xsl:apply-templates select=\"ROWSET\"/>\n" + " </EMPLOYEES>\n" + " </xsl:template>\n" + " <xsl:template match=\"ROWSET\">\n" + " <xsl:apply-templates select=\"ROW\"/>\n" + " </xsl:template>\n" + " <xsl:template match=\"ROW\">\n" + " <EMPLOYEE>\n" + " <EMPLOYEE_ID>\n" + " <xsl:apply-templates select=\"EMPNO\"/>\n" + " </EMPLOYEE_ID>\n" + " <EMPLOYEE_NAME>\n" + " <xsl:apply-templates select=\"ENAME\"/>\n" + " </EMPLOYEE_NAME>\n" + " <HIRE_DATE>\n" + " <xsl:apply-templates select=\"HIREDATE\"/>\n" + " </HIRE_DATE>\n" + " <JOB_TITLE>\n" + " <xsl:apply-templates select=\"JOB\"/>\n" + " </JOB_TITLE>\n" + " </EMPLOYEE>\n" + " </xsl:template>\n" + "</xsl:stylesheet>\n"; // Create the connection. string constr = "User Id=scott;Password=tiger;Data Source=oracle"; OracleConnection con = new OracleConnection(constr); con.Open(); // Set the date, and timestamp formats for Oracle 9i Release 2, or later. // This is just needed for queries. if (!con.ServerVersion.StartsWith("9.0") && !con.ServerVersion.StartsWith("8.1")) { OracleGlobalization sessionParams = con.GetSessionInfo(); sessionParams.DateFormat = "YYYY-MM-DD\"T\"HH24:MI:SS"; sessionParams.TimeStampFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3"; sessionParams.TimeStampTZFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3"; con.SetSessionInfo(sessionParams); } // Create the command. OracleCommand cmd = new OracleCommand("", con); // Set the XML command type to query. cmd.XmlCommandType = OracleXmlCommandType.Query; // Set the SQL query. cmd.CommandText = "select * from emp e where e.empno = :empno"; // Set command properties that affect XML query behaviour. cmd.BindByName = true; // Bind values to the parameters in the SQL query. Int32 empNum = 7369; cmd.Parameters.Add("empno", OracleDbType.Int32, empNum, ParameterDirection.Input); // Set the XML query properties. cmd.XmlQueryProperties.MaxRows = 1; cmd.XmlQueryProperties.RootTag = "ROWSET"; cmd.XmlQueryProperties.RowTag = "ROW"; cmd.XmlQueryProperties.Xslt = xslstr; // Test query execution without returning a result. Console.WriteLine("SQL query: select * from emp e where e.empno = 7369"); Console.WriteLine("Maximum rows: all rows (-1)"); Console.WriteLine("Return Value from OracleCommand.ExecuteNonQuery():"); rows = cmd.ExecuteNonQuery(); Console.WriteLine(rows); Console.WriteLine("\n"); // Get the XML document as an XmlReader. Console.WriteLine("SQL query: select * from emp e where e.empno = 7369"); Console.WriteLine("Maximum rows: all rows (-1)"); Console.WriteLine("XML Document from OracleCommand.ExecuteXmlReader():"); XmlReader xmlReader = cmd.ExecuteXmlReader(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true; xmlDocument.Load(xmlReader); Console.WriteLine(xmlDocument.OuterXml); Console.WriteLine("\n"); // Change the SQL query, and set the maximum number of rows to 2. cmd.CommandText = "select * from emp e"; cmd.Parameters.Clear(); cmd.XmlQueryProperties.MaxRows = 2; // Get the XML document as a Stream. Console.WriteLine("SQL query: select * from emp e"); Console.WriteLine("Maximum rows: 2"); Console.WriteLine("XML Document from OracleCommand.ExecuteStream():"); Stream stream = cmd.ExecuteStream(); sr = new StreamReader(stream, Encoding.Unicode); Console.WriteLine(sr.ReadToEnd()); Console.WriteLine("\n"); // Get all the rows. cmd.XmlQueryProperties.MaxRows = -1; // Append the XML document to an existing Stream. Console.WriteLine("SQL query: select * from emp e"); Console.WriteLine("Maximum rows: all rows (-1)"); Console.WriteLine("XML Document from OracleCommand.ExecuteToStream():"); MemoryStream mstream = new MemoryStream(32); cmd.ExecuteToStream(mstream); mstream.Seek(0, SeekOrigin.Begin); sr = new StreamReader(mstream, Encoding.Unicode); Console.WriteLine(sr.ReadToEnd()); Console.WriteLine("\n"); // Clean up. cmd.Dispose(); con.Close(); con.Dispose(); } }
次の各表にOracleXmlQueryProperties
メンバーをリストします。
OracleXmlQueryPropertiesコンストラクタ
OracleXmlQueryProperties
コンストラクタを、表7-2にリストします。
OracleXmlQueryPropertiesプロパティ
OracleXmlQueryProperties
プロパティを、表7-3にリストします。
表7-3 OracleXmlQueryPropertiesプロパティ
名前 | 説明 |
---|---|
結果のXMLドキュメント内で表現できる結果セットからの行の最大数を指定します。 |
|
結果のXMLドキュメントのルート要素を指定します。 |
|
XMLドキュメント内の結果セットからデータの行を識別するXML要素の値を指定します。 |
|
XSLTを使用したXML変換に使用するXSLドキュメントを指定します。 |
|
XSLドキュメントのパラメータを指定します。 |
OracleXmlQueryPropertiesパブリック・メソッド
OracleXmlQueryProperties
パブリック・メソッドを、表7-4にリストします。
OracleXmlQueryProperties
コンストラクタでは、OracleXmlQueryProperties
クラスの新規インスタンスをインスタンス化します。
宣言
// C# public OracleXmlQueryProperties();
OracleXmlQueryProperties
プロパティを、表7-5にリストします。
表7-5 OracleXmlQueryPropertiesプロパティ
名前 | 説明 |
---|---|
結果のXMLドキュメント内で表現できる結果セットからの行の最大数を指定します。 |
|
結果のXMLドキュメントのルート要素を指定します。 |
|
XMLドキュメント内の結果セットからデータの行を識別するXML要素の値を指定します。 |
|
XSLTを使用したXML変換に使用するXSLドキュメントを指定します。 |
|
XSLドキュメントのパラメータを指定します。 |
このプロパティでは、結果のXMLドキュメント内で表現できる結果セットからの行の最大数を指定します。
宣言
// C# public int MaxRows {get; set;}
プロパティ値
行の最大数。
例外
ArgumentException
- MaxRow
の新しい値は無効です。
備考
デフォルト値は、-1
です。
可能な値:
-1
(すべての行)。
0
以上の数。
このプロパティでは結果のXMLドキュメントのルート要素を指定します。
宣言
// C# public string RootTag {get; set;}
プロパティ値
結果のXMLドキュメントのルート要素を指定します。
備考
デフォルトのルート・タグは、ROWSET
です。
結果のXMLドキュメント内にルート・タグが使用されていないことを示すには、このプロパティをNULL
または""
またはString.Empty
に設定します。
RootTag
およびRowTag
の両方がNULL
に設定されている場合、結果セットが1行と1列を戻す場合にのみ、XMLドキュメントが戻されます。
このプロパティは、XMLドキュメント内の結果セットからデータの行を識別するXML要素の値を指定します。
宣言
// C# public string RowTag {get; set;}
プロパティ値
XML要素の値
備考
デフォルトはROW
です。
結果のXMLドキュメント内に行タグが使用されていないことを示すには、このプロパティをNULL
または""
またはString.Empty
に設定します。
RootTag
およびRowTag
の両方がNULL
に設定されている場合、結果セットが1行と1列を戻す場合にのみ、XMLドキュメントが戻されます。
このプロパティでは、XSLTを使用するXML変換に使用するXSLドキュメントを指定します。
宣言
// C# public string Xslt {get; set;}
プロパティ値
XML変換に使用するXSLドキュメント。
備考
デフォルト値はNULL
です。
問合せの結果セットから生成されるXMLドキュメントのXML変換にXSLドキュメントを使用します。
OracleXmlQueryProperties
パブリック・メソッドを、表7-6にリストします。