Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе объясняется, как функции массовой загрузки XML можно использовать в среде .NET. Подробные сведения о массовой загрузке XML см. в разделе "Выполнение массовой загрузки ДАННЫХ XML" (SQLXML 4.0).
Чтобы использовать com-объект массовой загрузки SQLXML из управляемой среды, необходимо добавить ссылку на проект в этот объект. При этом создается интерфейс управляемой оболочки вокруг объекта BULK Load COM.
Замечание
Массовая загрузка управляемого XML не работает с управляемыми потоками и требует оболочки вокруг собственных потоков. Компонент массовой загрузки SQLXML не будет выполняться в многопоточной среде (атрибут "[MTAThread]". Если вы пытаетесь запустить компонент массовой загрузки в среде с несколькими потоками, вы получите исключение InvalidCastException со следующими дополнительными сведениями: "QueryInterface для интерфейса SQLXMLBULKLOADLib.ISQLXMLBulkLoad завершилось сбоем". Обходное решение заключается в том, чтобы сделать объект, содержащий объект Bulk Load доступным для одного потока (например, с помощью атрибута [STAThread] , как показано в примере).
В этом разделе представлен пример приложения C# для массовой загрузки XML-данных в базе данных. Чтобы создать рабочий пример, выполните следующие действия.
Создайте следующие таблицы:
CREATE TABLE Ord ( OrderID int identity(1,1) PRIMARY KEY, CustomerID varchar(5)) GO CREATE TABLE Product ( ProductID int identity(1,1) PRIMARY KEY, ProductName varchar(20)) GO CREATE TABLE OrderDetail ( OrderID int FOREIGN KEY REFERENCES Ord(OrderID), ProductID int FOREIGN KEY REFERENCES Product(ProductID), CONSTRAINT OD_key PRIMARY KEY (OrderID, ProductID)) GOСохраните следующую схему в файле (schema.xml):
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema"> <xsd:annotation> <xsd:appinfo> <sql:relationship name="OrderOD" parent="Ord" parent-key="OrderID" child="OrderDetail" child-key="OrderID" /> <sql:relationship name="ODProduct" parent="OrderDetail" parent-key="ProductID" child="Product" child-key="ProductID" inverse="true"/> </xsd:appinfo> </xsd:annotation> <xsd:element name="Order" sql:relation="Ord" sql:key-fields="OrderID" > <xsd:complexType> <xsd:sequence> <xsd:element name="Product" sql:relation="Product" sql:key-fields="ProductID" sql:relationship="OrderOD ODProduct"> <xsd:complexType> <xsd:attribute name="ProductID" type="xsd:int" /> <xsd:attribute name="ProductName" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="OrderID" type="xsd:integer" /> <xsd:attribute name="CustomerID" type="xsd:string" /> </xsd:complexType> </xsd:element> </xsd:schema>Сохраните следующий пример XML-документа в файле (data.xml):
<ROOT> <Order OrderID="11" CustomerID="ALFKI"> <Product ProductID="11" ProductName="Chai" /> <Product ProductID="22" ProductName="Chang" /> </Order> <Order OrderID="22" CustomerID="ANATR"> <Product ProductID="33" ProductName="Aniseed Syrup" /> <Product ProductID="44" ProductName="Gumbo Mix" /> </Order> </ROOT>Запустите Visual Studio.
Создайте приложение командной строки на языке C#.
В меню Проект выберите Добавить ссылку.
На вкладке COM выберите библиотеку типов Microsoft SQLXML Bulkload 4.0 (xblkld4.dll) и нажмите кнопку "ОК". Вы увидите сборку Interop.SQLXMLBULKLOADLib , созданную в проекте.
Замените метод Main() следующим кодом. Обновите свойство ConnectionString и путь к файлам схемы и данных.
[STAThread] static void Main(string[] args) { try { SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class objBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4Class(); objBL.ConnectionString = "Provider=sqloledb;server=server;database=databaseName;integrated security=SSPI"; objBL.ErrorLogFile = "error.xml"; objBL.KeepIdentity = false; objBL.Execute ("schema.xml","data.xml"); } catch(Exception e) { Console.WriteLine(e.ToString()); } }Чтобы загрузить XML-файл в созданной таблице, выполните сборку и запуск проекта.
Замечание
Ссылку на компонент массовой загрузки (xblkld4.dll) также можно добавить с помощью средства tlbimp.exe, которое доступно в рамках платформы .NET. Это средство создает управляемую оболочку для собственной библиотеки DLL (xblkld4.dll), которая затем может использоваться в любом проекте .NET. Рассмотрим пример.
c:\>tlbimp xblkld4.dllПри этом создается библиотека DLL управляемой оболочки (SQLXMLBULKLOADLib.dll), которую можно использовать в проекте .NET Framework. В .NET Framework вы добавите ссылку на проект в только что созданную библиотеку DLL.