【问题标题】:How to save XML(writer) in DataBase如何在数据库中保存 XML(writer)
【发布时间】:2013-07-18 12:17:17
【问题描述】:

我正在编写一个程序,用户正在做一些事情,然后可以使用 SaveFileDialog() 将 XML 保存到他的硬盘驱动器。

当前创建 XML 文件的代码是这样的(sn-p 应该对每个人都有效):

SaveFileDialog sfd = new SaveFileDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
using (XmlWriter writer = XmlWriter.Create(filename))
{
    try
    {
        writer.WriteStartDocument();

        writer.WriteStartElement("Questionnaire");
        writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
        writer.WriteAttributeString("xsi", "noNamespaceSchemaLocation", null, "D:\\Schema.xsd");

        writer.WriteStartElement("Title");
        writer.WriteString("test");
        writer.WriteEndElement();
        writer.WriteStartElement("Number");
        writer.WriteString("1");
        writer.WriteEndElement();
        writer.WriteEndElement();
        writer.Flush();
        writer.Close();
    }
    catch (Exception ex)
    {
        System.Windows.MessageBox.Show(ex.Message);
    }
}
}

现在我还想将 XML 保存在我的数据库中。通过在我的表中使用列类型xml(我不知道如何或将什么保存到此列中)或将完整的 XML 代码保存在类型为nvarchar 的列中,我实际上想要这样做.

如何将由XmlWriter 创建的XML 文件保存到我的数据库(xmlstring 类型的列,其中包含xml)?我所说的“其中包括 xml”是指完整的 xml 代码,比如

<Title>
    MyTitle
</Title>

【问题讨论】:

标签: c# sql xml database xmlwriter


【解决方案1】:

您可以使用以下构造函数:

var sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb))
{ 
    // rest of your code above
    SaveToDb(sb.ToString());
}

还有SaveToDb方法(省略验证和异常处理):

private static void SaveToDb(string xml)
{
    using (var connection = new SqlConnection(conn))
    using (var command = new SqlCommand(
        "INSERT MyXmlTable VALUES (@XML)",
        connection))
    {
        command.Parameters.Add("XML", SqlDbType.Xml, xml.Length).Value = xml;
        connection.Open();
        var result = command.ExecuteNonQuery();
    }
}

【讨论】:

  • 插入 dbo.XML_Files (field2, field3) VALUES (@Number,@XML)
  • 是的,没关系,只是看到我表中的列 ID 不是 auto_increment,这就是弹出错误“列缺失”的原因。无论如何,它工作得很好,谢谢:)
猜你喜欢
  • 2019-12-17
  • 2020-06-10
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 2013-03-05
相关资源
最近更新 更多