使用C#从XML创建SQL表

时间:2019-06-11 23:12:25

标签: c# sql sql-server

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

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());

                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

从上面提到的代码中删除我会说下面的行需要更新 var doc = XDocument.Parse(“”);

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

这仅在文件格式正确时起作用。