如何在数据库中保存XML(编写器)
本文关键字:XML 保存 数据库 | 更新日期: 2023-09-27 18:23:56
我正在编写一个程序,用户在其中做一些事情,然后可以使用SaveFileDialog()将XML保存到他的硬盘驱动器中。
创建XML文件的当前代码是这样的(每个人都应该使用的片段):
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文件保存到我的数据库(类型为xml
或string
的列,其中包括XML)?我所说的"which includes the xml"是指完整的xml代码吗,比如
<Title>
MyTitle
</Title>
您可以使用以下构造函数:
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();
}
}