【问题标题】:Creating SQL table from XML using C#使用 C# 从 XML 创建 SQL 表
【发布时间】:2019-10-26 09:50:38
【问题描述】:

寻求以下代码的帮助 - 我试图找出在 XML 文件中我真正想要用来移动到 SQL 表的位置。我只是不确定如何从我的文件系统中指定它...

using System;
using System.Data.SqlClient;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var con = new SqlConnection("Server=(local);Database=TempDb;Integrated Security=true"))
            {
                con.Open();

                var cmdCreateTable = new SqlCommand("if object_id('dbo.t') is null create table t(id int identity primary key, doc xml);",con);
                cmdCreateTable.ExecuteNonQuery();

                var cmdInsertXml = new SqlCommand("insert into t(doc) values (@doc);", con);
                var pDoc = cmdInsertXml.Parameters.Add("@doc", System.Data.SqlDbType.Xml);

                var doc = XDocument.Parse("<root><cn/><cn/><cn/></root>");
                pDoc.Value = doc.CreateReader();

                cmdInsertXml.ExecuteNonQuery();

                var cmdRetrieveXml = new SqlCommand("select id, doc from t",con);
                using (var rdr = cmdRetrieveXml.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        var xr = rdr.GetSqlXml(1);
                        var rd = XDocument.Parse(xr.Value);
                        Console.WriteLine(rd.ToString());

                    }
                }
            }
        }
    }
}

【问题讨论】:

  • 这是一个关于如何从文件中创建 xml 类型参数的问题吗?如果是这样,该示例的其余部分几乎是杂音,问题并不能反映真正的问题。

标签: c# sql sql-server


【解决方案1】:

我不确定我是否正确,但如果你想试试,我发现了这个。

尝试从DataTable读取xml

DataTable table;

   private void createDatatableFromXML()
   {
       table = new DataTable();
       string dataFile = @"DatafileLocation\datafile.xml";
       if (File.Exists(dataFile))
       {
           table.ReadXml(dataFile);

       }
       else
       {
          //Do som messaging
           return;
       }
   }

之后尝试从DataTable 创建 SQL 表,请参阅此link

【讨论】:

    【解决方案2】:

    从提到的代码我想说下面的行需要更新 var doc = XDocument.Parse("");

    我会说类似 var doc = XDocument.Parse(File.ReadAllText(filePath));

    这只有在文件格式正确时才有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-28
      • 2023-03-23
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多