用于 XML 和 SQL Server 集成的 .NET 应用程序

Posted

技术标签:

【中文标题】用于 XML 和 SQL Server 集成的 .NET 应用程序【英文标题】:.NET Application for XML and SQL Server Integration 【发布时间】:2012-04-11 13:48:33 【问题描述】:

作为一个编程经验很少的数据库开发人员,我目前正在尝试开发一个 C# .NET 控制台应用程序来将 XML 文件导入 SQL Server 数据库。导入完成后,我需要创建一个“响应”文件以传回另一个应用程序。

在进行自己的研究时,我遇到了 SQLBULKLOAD 类。事实上,我在网上找到了一些示例代码,这些示例代码(至少部分地)显示了我正在尝试做的事情:

using System;
using System.IO;
using System.Collections;
using SQLXMLBULKLOADLib;
using System.Data.OleDb;
using System.Diagnostics;
namespace SQLXmlExample

    class Program
    
        [STAThread]
        static void Main(string[] args)
        
            string schema = "C:\\ImportSample\\MappingFile.xml";
            string datafile = "C:\\ImportSample\\DataFile.xml";
            string connectionString = @"provider=SQLOLEDB;data source=localhost;database=SqlXmlDemo;Integrated Security=SSPI;";
            for (int i = 0; i < args.Length; i++)
            
                switch (args[i].ToLower())
                
                    case "-schema": 
                            schema = args[i + 1];
                            break;
                    case "-datafile": 
                            datafile = args[i + 1];
                            break;
                                            
            
            if (schema == string.Empty || datafile == string.Empty)
            
                Console.WriteLine("Missing Schema or Data File.  Format: SqlXmlExample -datafile [filename] -schema [filename]");
                return;
            
            Load(datafile, schema, connectionString);
        
        static public void Load(string XMLFilename, string XMLMappingFilename, string ConnectionString)
        
            SQLXMLBULKLOADLib.SQLXMLBulkLoad loader = new SQLXMLBULKLOADLib.SQLXMLBulkLoad();
            loader.CheckConstraints = true;
            loader.XMLFragment = true;
            loader.SchemaGen = true;
            loader.SGDropTables = false;
            loader.Transaction = false;
            loader.ConnectionString = ConnectionString;
            loader.Execute("C:\\ImportSample\\MappingFile.xml", "C:\\ImportSample\\DataFile.xml");
        
    
  

使用上面的代码,我可以将 .XML 文件导入 SQL Server 实例。但是,我的问题是生成“响应”.XML 文件以提供有关批量加载操作的信息(即插入了多少条记录,如果插入成功)。 就目前而言,我认为我可能正在使用错误的课程来完成我想要完成的工作。我使用的是正确的类,还是应该使用不同的类? 如果可能的话,任何人都可以向我指出更多材料的方向来帮助我吗?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

使用ErrorLogFile怎么样?

这是批量加载程序存储所有错误和消息的地方,只需尝试一个,让它失败,看看格式是什么,然后你就可以加载、解析和生成 xml?

【讨论】:

我尝试使用 ErrorLogFile。尽管它在错误方面有所帮助,但它并没有提供实际的日志记录机制来显示成功加载了多少记录。顺便说一句,感谢您的意见!

以上是关于用于 XML 和 SQL Server 集成的 .NET 应用程序的主要内容,如果未能解决你的问题,请参考以下文章