(原) ODP.NET 演示如何以XML文档的形式获取数据
 using System;
using System; using System.Data;
using System.Data; using System.Text;
using System.Text; using System.IO;
using System.IO; using System.Xml;
using System.Xml; using Oracle.DataAccess.Client;
using Oracle.DataAccess.Client; using Oracle.DataAccess.Types;
using Oracle.DataAccess.Types;
 namespace XmlQuery11
namespace XmlQuery11 {
{ // 演示如何以XML文档的形式获取数据
    // 演示如何以XML文档的形式获取数据 class Program
    class Program {
    { static void Main(string[] args)
        static void Main(string[] args) {
        { int rows = 0;
            int rows = 0; StreamReader sr = null;
            StreamReader sr = null;
 // Define the XSL document for doing the transform.
            // Define the XSL document for doing the transform. string xslstr = "<?xml version='1.0'?>\n" +
            string xslstr = "<?xml version='1.0'?>\n" + "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" +
                            "<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">\n" + "  <xsl:output encoding=\"utf-8\"/>\n" +
                      "  <xsl:output encoding=\"utf-8\"/>\n" + "  <xsl:template match=\"/\">\n" +
                      "  <xsl:template match=\"/\">\n" + "    <EMPLOYEES>\n" +
                      "    <EMPLOYEES>\n" + "      <xsl:apply-templates select=\"ROWSET\"/>\n" +
                      "      <xsl:apply-templates select=\"ROWSET\"/>\n" + "    </EMPLOYEES>\n" +
                      "    </EMPLOYEES>\n" + "  </xsl:template>\n" +
                      "  </xsl:template>\n" + "  <xsl:template match=\"ROWSET\">\n" +
                      "  <xsl:template match=\"ROWSET\">\n" + "      <xsl:apply-templates select=\"ROW\"/>\n" +
                      "      <xsl:apply-templates select=\"ROW\"/>\n" + "  </xsl:template>\n" +
                      "  </xsl:template>\n" + "  <xsl:template match=\"ROW\">\n" +
                      "  <xsl:template match=\"ROW\">\n" + "    <EMPLOYEE>\n" +
                      "    <EMPLOYEE>\n" + "    <EMPLOYEE_ID>\n" +
                      "    <EMPLOYEE_ID>\n" + "      <xsl:apply-templates select=\"EMPNO\"/>\n" +
                      "      <xsl:apply-templates select=\"EMPNO\"/>\n" + "    </EMPLOYEE_ID>\n" +
                      "    </EMPLOYEE_ID>\n" + "    <EMPLOYEE_NAME>\n" +
                      "    <EMPLOYEE_NAME>\n" + "      <xsl:apply-templates select=\"ENAME\"/>\n" +
                      "      <xsl:apply-templates select=\"ENAME\"/>\n" + "    </EMPLOYEE_NAME>\n" +
                      "    </EMPLOYEE_NAME>\n" + "    <HIRE_DATE>\n" +
                      "    <HIRE_DATE>\n" + "      <xsl:apply-templates select=\"HIREDATE\"/>\n" +
                      "      <xsl:apply-templates select=\"HIREDATE\"/>\n" + "    </HIRE_DATE>\n" +
                      "    </HIRE_DATE>\n" + "    <JOB_TITLE>\n" +
                      "    <JOB_TITLE>\n" + "      <xsl:apply-templates select=\"JOB\"/>\n" +
                      "      <xsl:apply-templates select=\"JOB\"/>\n" + "    </JOB_TITLE>\n" +
                      "    </JOB_TITLE>\n" + "    </EMPLOYEE>\n" +
                      "    </EMPLOYEE>\n" + "  </xsl:template>\n" +
                      "  </xsl:template>\n" + "</xsl:stylesheet>\n";
                      "</xsl:stylesheet>\n"; Console.WriteLine(xslstr);
            Console.WriteLine(xslstr);
 // Create the connection
            // Create the connection string constr = "User Id=scott;Password=tiger;Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = bjoracle.oracle10g.mynet)))";
            string constr = "User Id=scott;Password=tiger;Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.24)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = bjoracle.oracle10g.mynet)))"; OracleConnection con = new OracleConnection(constr);
            OracleConnection con = new OracleConnection(constr); con.Open();
            con.Open();
 // Set the date, and timestamp formats for Oracle9i Release 2, or later.
            // Set the date, and timestamp formats for Oracle9i Release 2, or later. // This is just needed for queries.
            // This is just needed for queries. if (!con.ServerVersion.StartsWith("9.0") && !con.ServerVersion.StartsWith("8.1"))
            if (!con.ServerVersion.StartsWith("9.0") && !con.ServerVersion.StartsWith("8.1")) {
            { OracleGlobalization sessionParams = con.GetSessionInfo();
                OracleGlobalization sessionParams = con.GetSessionInfo(); sessionParams.DateFormat = "YYYY-MM-DD\"T\"HH24:MI:SS";
                sessionParams.DateFormat = "YYYY-MM-DD\"T\"HH24:MI:SS"; sessionParams.TimeStampFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3";
                sessionParams.TimeStampFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3"; sessionParams.TimeStampTZFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3";
                sessionParams.TimeStampTZFormat = "YYYY-MM-DD\"T\"HH24:MI:SS.FF3"; con.SetSessionInfo(sessionParams);
                con.SetSessionInfo(sessionParams); }
            }
 // Create the command
            // Create the command OracleCommand cmd = new OracleCommand("", con);
            OracleCommand cmd = new OracleCommand("", con);
 // Set the XML command type to query.
            // Set the XML command type to query. cmd.XmlCommandType = OracleXmlCommandType.Query;
            cmd.XmlCommandType = OracleXmlCommandType.Query;
 // Set the SQL query.
            // Set the SQL query. cmd.CommandText = "select * from emp e where e.empno = :empno";
            cmd.CommandText = "select * from emp e where e.empno = :empno";
 // Set command properties that affect XML query behaviour
            // Set command properties that affect XML query behaviour cmd.BindByName = true;
            cmd.BindByName = true;
 // Bind values to the parameters in the SQL query.
            // Bind values to the parameters in the SQL query. Int32 empNum = 7369;
            Int32 empNum = 7369; cmd.Parameters.Add(":empno", OracleDbType.Int32, empNum, ParameterDirection.Input);
            cmd.Parameters.Add(":empno", OracleDbType.Int32, empNum, ParameterDirection.Input);
 // Set the XML query properties.
            // Set the XML query properties. cmd.XmlQueryProperties.MaxRows = -1;  // -1 (all rows).
            cmd.XmlQueryProperties.MaxRows = -1;  // -1 (all rows).  cmd.XmlQueryProperties.RootTag = "ROWSET";
            cmd.XmlQueryProperties.RootTag = "ROWSET"; cmd.XmlQueryProperties.RowTag = "ROW";
            cmd.XmlQueryProperties.RowTag = "ROW"; cmd.XmlQueryProperties.Xslt = xslstr;
            cmd.XmlQueryProperties.Xslt = xslstr;
 // Test query execution without returning a result.
            // Test query execution without returning a result. Console.WriteLine("SQL query: select * from emp e where e.empno = 7369");
            Console.WriteLine("SQL query: select * from emp e where e.empno = 7369"); Console.WriteLine("Maximum rows: all rows (-1)");
            Console.WriteLine("Maximum rows: all rows (-1)"); Console.WriteLine("Return Value from OracleCommand.ExecuteNonQuery();");
            Console.WriteLine("Return Value from OracleCommand.ExecuteNonQuery();"); //对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。
            //对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。 rows = cmd.ExecuteNonQuery();
            rows = cmd.ExecuteNonQuery(); Console.WriteLine(rows);
            Console.WriteLine(rows);  Console.WriteLine("\n");
            Console.WriteLine("\n");
 // Get the XML document as an XmlReader
            // Get the XML document as an XmlReader Console.WriteLine("SQL query: select * from emp e where e.empno=7369");
            Console.WriteLine("SQL query: select * from emp e where e.empno=7369"); Console.WriteLine("Maximum rows: all rows(-1)");
            Console.WriteLine("Maximum rows: all rows(-1)"); Console.WriteLine("XML Document from OracleCommand ExecuteXmlReader();");
            Console.WriteLine("XML Document from OracleCommand ExecuteXmlReader();"); XmlReader xmlReader = cmd.ExecuteXmlReader();
            XmlReader xmlReader = cmd.ExecuteXmlReader(); XmlDocument xmlDocument = new XmlDocument();
            XmlDocument xmlDocument = new XmlDocument(); xmlDocument.PreserveWhitespace = true;
            xmlDocument.PreserveWhitespace = true; xmlDocument.Load(xmlReader);
            xmlDocument.Load(xmlReader); Console.WriteLine(xmlDocument.OuterXml);
            Console.WriteLine(xmlDocument.OuterXml); Console.WriteLine("\n");
            Console.WriteLine("\n");
 // Change the SQL query, and set the maximum number of rows to 2.
            // Change the SQL query, and set the maximum number of rows to 2. cmd.CommandText = "select * from emp e;";
            cmd.CommandText = "select * from emp e;"; cmd.Parameters.Clear();
            cmd.Parameters.Clear(); cmd.XmlQueryProperties.MaxRows = 2; // -1 all rows; 0 0 row; 1 1 row; 2 2 rows
            cmd.XmlQueryProperties.MaxRows = 2; // -1 all rows; 0 0 row; 1 1 row; 2 2 rows
 // Get the XML document as a stream
            // Get the XML document as a stream Console.WriteLine("SQL query: select * from emp e;");
            Console.WriteLine("SQL query: select * from emp e;"); Console.WriteLine("Maximum rows: 2");
            Console.WriteLine("Maximum rows: 2"); Console.WriteLine("Xml document from OracleCommand.ExecuteStream();");
            Console.WriteLine("Xml document from OracleCommand.ExecuteStream();"); Stream stream = cmd.ExecuteStream();
            Stream stream = cmd.ExecuteStream(); sr = new StreamReader(stream, Encoding.Unicode);
            sr = new StreamReader(stream, Encoding.Unicode); Console.WriteLine(sr.ReadToEnd());
            Console.WriteLine(sr.ReadToEnd()); Console.WriteLine("\n");
            Console.WriteLine("\n");
 // Get all the rows
            // Get all the rows cmd.XmlQueryProperties.MaxRows = -1;
            cmd.XmlQueryProperties.MaxRows = -1;
 //Append the XML document to an existing stream.
            //Append the XML document to an existing stream. Console.WriteLine("SQL query: select * from emp e;");
            Console.WriteLine("SQL query: select * from emp e;"); Console.WriteLine("Maximum rows: all rows(-1)");
            Console.WriteLine("Maximum rows: all rows(-1)"); Console.WriteLine("XML Document from OracleCommand.ExecuteToStream();");
            Console.WriteLine("XML Document from OracleCommand.ExecuteToStream();"); MemoryStream mstream = new MemoryStream();
            MemoryStream mstream = new MemoryStream(); cmd.ExecuteToStream(mstream);
            cmd.ExecuteToStream(mstream); mstream.Seek(0, SeekOrigin.Begin);
            mstream.Seek(0, SeekOrigin.Begin); sr = new StreamReader(mstream, Encoding.Unicode);
            sr = new StreamReader(mstream, Encoding.Unicode); Console.WriteLine(sr.ReadToEnd());
            Console.WriteLine(sr.ReadToEnd()); Console.WriteLine("\n");
            Console.WriteLine("\n");
 // Clean up
            // Clean up cmd.Dispose();
            cmd.Dispose(); con.Close();
            con.Close(); con.Dispose();
            con.Dispose(); sr.Dispose();
            sr.Dispose(); stream.Dispose();
            stream.Dispose(); mstream.Dispose();
            mstream.Dispose();
 // waiting
            // waiting
 Console.ReadLine();
            Console.ReadLine(); }
        } }
    } }
}2、MaxRows = -1; // -1 (all rows).
3、cmd.BindByName = true; 如果XmlCommandType property 是 OracleXmlCommandType,并且OracleCommand包含parameters,必须设置为true。
4、定义xmlReader和xmlDocument,将xmlReader装入xmlDocument,利用xmlDocument.OuterXml将内容打印出来。
5、Stream stream = cmd.ExecuteStream(); 并把stream实例化为StreamReader。
6、MemoryStream mstream = new MemoryStream(); mstream.Seek(0, SeekOrigin.Begin); sr = new StreamReader(mstream, Encoding.Unicode);
posted on 2007-12-28 18:14 mjgforever 阅读(643) 评论(2) 收藏 举报
 
                    
                     
                    
                 
                    
                 
 
        
 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号