【问题标题】:Adding XML to a table in Microsoft SQL Server将 XML 添加到 Microsoft SQL Server 中的表
【发布时间】:2015-05-29 12:29:20
【问题描述】:
  • 我想要一个名为 TestPack 的表,其中包含 3 个列 - 名称、测试用例编号、测试计划
  • TestPlan是我电脑c盘里的xml文件
  • 如何创建此表?注意:我希望添加整个文件,而不是在第 3 列中编写实际的 xml 代码。

另外,我对 ASP.NET、c# 和 Microsoft SQL server 还很陌生,所以请不要问我愚蠢的问题

【问题讨论】:

  • 您的文件有多大(X KB、X MB、X GB?)您确定不需要在 XML 内容中进行搜索吗?为什么不想将它存储为 XML 数据类型?如果您真的不想存储内容,是否可以选择存储文件路径?
  • 嗯,是的,我确信我永远不需要在 xml 中搜索,目的是根据前两列访问特定的 xml 文件,然后在 UI 上显示该 xml 文件。
  • 我更喜欢存储整个 xml 而不是路径......并且 xml 文件的大小约为 70-100 kb

标签: c# asp.net .net sql-server


【解决方案1】:

首先你需要按照这个创建表

Create Table [MyTable] ( ID int, [myXmlColumn] xml);

然后你需要使用sql参数插入数据

 public static void InsertXMlDataIntoTableBySQLParameter()
    {
        using (SqlConnection sqlconnection = new SqlConnection(@"Data Source=.\SQLExpress; 
    Initial Catalog=MorganDB; Integrated Security=SSPI;"))
        {
            sqlconnection.Open();

            // create table if not exists 
            string createTableQuery = @"Create Table [MyTable] ( ID int, [myXmlColumn] xml)";
            SqlCommand command = new SqlCommand(createTableQuery, sqlconnection);
            command.ExecuteNonQuery();
           //whateever xml data 
            string xmlData = "<XmlRoot><childNode></childNode></XmlRoot>";

            string insertXmlQuery = @"Insert Into [MyTable] (ID,[myXmlColumn]) Values(1,@myXmlColumn)";

          // Insert XMl Value into Sql Table by SqlParameter
            SqlCommand insertCommand = new SqlCommand(insertXmlQuery, sqlconnection);
            SqlParameter sqlParam = insertCommand.Parameters.AddWithValue("@myXmlColumn", xmlData);
            sqlParam.DbType = DbType.Xml;
            insertCommand.ExecuteNonQuery();
        }
    }

【讨论】:

  • 感谢@Jagadeesh,但我并没有完全遵循它......但是,我认为上面的代码与下面的代码相同。注意:下面编写的代码运行良好。 'CREATE TABLE XMLwithOpenXML (Id INT IDENTITY PRIMARY KEY, XMLData XML, LoadedDateTime DATETIME) INSERT INTO XMLwithOpenXML(XMLData, LoadedDateTime) SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() FROM OPENROWSET(BULK 'D:\OpenXMLTesting.xml' , 'SINGLE_BLOB) 作为 x; SELECT * FROM XMLwithOpenXML'
猜你喜欢
  • 2010-10-20
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 2014-02-17
相关资源
最近更新 更多