C#中的XML到SQL中的varbinary列

时间:2011-07-07 19:09:40

标签: c# encoding xml-serialization varbinary

我有一个从文件加载的XmlDocument对象。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("C:\\myxml.txt");

我需要将此XML Document转换为与SQL表中的varbinary兼容的格式。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

byte[] data = Encoding.UTF8.GetBytes(xmlDoc.OuterXml);

答案 1 :(得分:3)

您可以将XML保存到内存流中,然后将生成的字节数组保存在varbinary列中:

MemoryStream ms = new MemoryStream();
xmlDoc.Save(ms);
ms.Position = 0;
byte[] xmlData = ms.ToArray();

理想情况下应尽可能切换到XML类型列(即SQL Server)或nvarchar

答案 2 :(得分:3)

通过直接读取文件作为字节来省略加载XML文档然后进行编码的开销:

byte[] data = File.ReadAllbytes("C:\\myxml.txt");

以上使用System.IO

然后像这样进入SQL:

SqlCommand cmd = new SqlCommand("INSERT INTO myTable(myCol) VALUES(@file)", myDbConn);
cmd.Parameters.Add("@file", SqlDbType.VarBinary).Value = data;

cmd.ExecuteNonQuery();