Converting a DataSet to an ADO Recordset
Số trang: 15
Loại file: pdf
Dung lượng: 38.24 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
[ Team LiB ] Recipe 5.10 Converting a DataSet to an ADO Recordset Problem You need to convert a DataSet to an ADO Recordset so that you can use it in a legacy application. Solution You must persist the DataSet to XML, transform it to ADO Recordset schema, and load it into an ADO Recordset using COM interop
Nội dung trích xuất từ tài liệu:
Converting a DataSet to an ADO Recordset[ Team LiB ]Recipe 5.10 Converting a DataSet to an ADO RecordsetProblemYou need to convert a DataSet to an ADO Recordset so that you can use it in a legacyapplication.SolutionYou must persist the DataSet to XML, transform it to ADO Recordset schema, and loadit into an ADO Recordset using COM interop.Youll need a reference to the Primary Interop Assembly (PIA) for ADO provided in thefile ADODB.DLL. Select adodb from the .NET tab in Visual Studio .NETs AddReference Dialog.The sample uses one XML file:Orders.xslt The XSLT stylesheet used to transform the XML document output by the DataSet into an ADO Recordset XML document.The sample code contains one event handler and one method:Go Button.Click Converts the DataSet to an ADO Recordset using the following steps: 1. A shell XML document for the ADO Recordset is created. 2. A DataReader accesses the schema information for the data to convert using the GetSchemaTable( ) method. This information is mapped to and added to the ADO Recordset XML document. 3. The DataSet is loaded with data for a single DataTable. The XML document for the DataSet is transformed and written into the ADO Recordset XML document. 4. An ADO Recordset object is created and loaded with the ADO Recordset XML document. This completes the conversion. 5. The ADO Recordset is loaded into a DataTable using the OleDbDataAdapter. The default view for the table is bound to the data grid on the form to display the results of the conversion.GetDataTypeInfo( ) This method maps SQL Server specific types to data type attributes for the ds and rs namespaces used to serialize an ADO Rowset.The XSLT file is shown in Example 5-10.Example 5-10. File: Orders.xslt The C# code is shown in Example 5-11.Example 5-11. File: ConvertDataSetToAdoRecordsetForm.cs// Namespaces, variables, and constantsusing System;using System.Configuration;using System.Windows.Forms;using System.IO;using System.Text;using System.Xml;using System.Xml.Xsl;using System.Data;using System.Data.SqlClient;using System.Data.OleDb;private const String ADOXMLFILE = ConfigurationSettings.AppSettings[Temp_Directory] + ADO_Orders.xml;// . . .private void goButton_Click(object sender, System.EventArgs e){ Cursor.Current = Cursors.WaitCursor; String sqlText = SELECT * FROM Orders; // Create the connection. SqlConnection conn = new SqlConnection( ConfigurationSettings.AppSettings[Sql_ConnectString]); // Create the command to load all orders records. SqlCommand cmd = new SqlCommand(sqlText, conn); conn.Open( ); // Create a DataReader from the command. SqlDataReader dr = cmd.ExecuteReader( CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo); // Create a table of the schema for the DataReader. DataTable schemaTable = dr.GetSchemaTable( ); // Create an XML document. XmlDocument xmlDoc = new XmlDocument( ); // Add ADO namespace and schema definition tags to the XML document. String adoXml = + + + + + ; xmlDoc.LoadXml(adoXml); // Create a namespace manager for the XML document. XmlNamespaceManager nm = new XmlNamespaceManager(xmlDoc.NameTable); // Add ADO prefixes. nm.AddNamespace(s, uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882); nm.AddNamespace(dt, uuid:C2F41010-65B3-11d1-A29F-00AA00C14882); nm.AddNamespace(rs, urn:schemas-microsoft-com:rowset);nm.AddNamespace(z, #RowsetSchema);// Select the s:ElementType node.XmlNode curNode = xmlDoc.SelectSingleNode(//s:ElementType, nm);XmlElement xe = null;XmlAttribute xa = null;// Iterate through the schema records for the DataReader.foreach(DataRow sr in schemaTable.Rows){ // Create an AttributeType element for the schema record. xe = xmlDoc.CreateElement(s, AttributeType, uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882); // Get the data type. SqlDbType sqlDbType = (SqlDbType)sr[ProviderType]; // Create the name attribute. xa = xmlDoc.CreateAttribute(, name, ); xa.Value = sr[ColumnName].ToString( ); xe.SetAttributeNode(xa); // Create the number attribute. xa = xmlDoc.CreateAttribute(rs, number, urn:schemas-microsoft-com:rowset); xa.Value = ((int)sr[ColumnOrdinal] + 1).ToString( ); xe.SetAttributeNode(xa); // Add attribute if null values are allowed in the column. if((bool)sr[AllowDBNull]) { xa = xmlDoc.CreateAttribute(rs, nullable, urn:schemas-microsoft ...
Nội dung trích xuất từ tài liệu:
Converting a DataSet to an ADO Recordset[ Team LiB ]Recipe 5.10 Converting a DataSet to an ADO RecordsetProblemYou need to convert a DataSet to an ADO Recordset so that you can use it in a legacyapplication.SolutionYou must persist the DataSet to XML, transform it to ADO Recordset schema, and loadit into an ADO Recordset using COM interop.Youll need a reference to the Primary Interop Assembly (PIA) for ADO provided in thefile ADODB.DLL. Select adodb from the .NET tab in Visual Studio .NETs AddReference Dialog.The sample uses one XML file:Orders.xslt The XSLT stylesheet used to transform the XML document output by the DataSet into an ADO Recordset XML document.The sample code contains one event handler and one method:Go Button.Click Converts the DataSet to an ADO Recordset using the following steps: 1. A shell XML document for the ADO Recordset is created. 2. A DataReader accesses the schema information for the data to convert using the GetSchemaTable( ) method. This information is mapped to and added to the ADO Recordset XML document. 3. The DataSet is loaded with data for a single DataTable. The XML document for the DataSet is transformed and written into the ADO Recordset XML document. 4. An ADO Recordset object is created and loaded with the ADO Recordset XML document. This completes the conversion. 5. The ADO Recordset is loaded into a DataTable using the OleDbDataAdapter. The default view for the table is bound to the data grid on the form to display the results of the conversion.GetDataTypeInfo( ) This method maps SQL Server specific types to data type attributes for the ds and rs namespaces used to serialize an ADO Rowset.The XSLT file is shown in Example 5-10.Example 5-10. File: Orders.xslt The C# code is shown in Example 5-11.Example 5-11. File: ConvertDataSetToAdoRecordsetForm.cs// Namespaces, variables, and constantsusing System;using System.Configuration;using System.Windows.Forms;using System.IO;using System.Text;using System.Xml;using System.Xml.Xsl;using System.Data;using System.Data.SqlClient;using System.Data.OleDb;private const String ADOXMLFILE = ConfigurationSettings.AppSettings[Temp_Directory] + ADO_Orders.xml;// . . .private void goButton_Click(object sender, System.EventArgs e){ Cursor.Current = Cursors.WaitCursor; String sqlText = SELECT * FROM Orders; // Create the connection. SqlConnection conn = new SqlConnection( ConfigurationSettings.AppSettings[Sql_ConnectString]); // Create the command to load all orders records. SqlCommand cmd = new SqlCommand(sqlText, conn); conn.Open( ); // Create a DataReader from the command. SqlDataReader dr = cmd.ExecuteReader( CommandBehavior.SchemaOnly | CommandBehavior.KeyInfo); // Create a table of the schema for the DataReader. DataTable schemaTable = dr.GetSchemaTable( ); // Create an XML document. XmlDocument xmlDoc = new XmlDocument( ); // Add ADO namespace and schema definition tags to the XML document. String adoXml = + + + + + ; xmlDoc.LoadXml(adoXml); // Create a namespace manager for the XML document. XmlNamespaceManager nm = new XmlNamespaceManager(xmlDoc.NameTable); // Add ADO prefixes. nm.AddNamespace(s, uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882); nm.AddNamespace(dt, uuid:C2F41010-65B3-11d1-A29F-00AA00C14882); nm.AddNamespace(rs, urn:schemas-microsoft-com:rowset);nm.AddNamespace(z, #RowsetSchema);// Select the s:ElementType node.XmlNode curNode = xmlDoc.SelectSingleNode(//s:ElementType, nm);XmlElement xe = null;XmlAttribute xa = null;// Iterate through the schema records for the DataReader.foreach(DataRow sr in schemaTable.Rows){ // Create an AttributeType element for the schema record. xe = xmlDoc.CreateElement(s, AttributeType, uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882); // Get the data type. SqlDbType sqlDbType = (SqlDbType)sr[ProviderType]; // Create the name attribute. xa = xmlDoc.CreateAttribute(, name, ); xa.Value = sr[ColumnName].ToString( ); xe.SetAttributeNode(xa); // Create the number attribute. xa = xmlDoc.CreateAttribute(rs, number, urn:schemas-microsoft-com:rowset); xa.Value = ((int)sr[ColumnOrdinal] + 1).ToString( ); xe.SetAttributeNode(xa); // Add attribute if null values are allowed in the column. if((bool)sr[AllowDBNull]) { xa = xmlDoc.CreateAttribute(rs, nullable, urn:schemas-microsoft ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kỹ thuật lập trình Oreilly Ado Dot Net Cookbook Ebook-Lib Converting a DataSet to an ADO RecordsetTài liệu liên quan:
-
52 trang 434 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 321 0 0 -
74 trang 304 0 0
-
96 trang 299 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 293 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 286 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 277 0 0 -
Tài liệu hướng dẫn sử dụng thư điện tử tài nguyên và môi trường
72 trang 270 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 270 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0