XML в C # в столбец varbinary в SQL - PullRequest
2 голосов
/ 07 июля 2011

У меня есть объект XmlDocument, который я загружаю из файла.

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

Мне нужно преобразовать этот XML-документ в формат, совместимый с varbinary в таблице SQL.Как мне этого добиться?

Ответы [ 3 ]

4 голосов
/ 07 июля 2011
byte[] data = Encoding.UTF8.GetBytes(xmlDoc.OuterXml);
3 голосов
/ 07 июля 2011

Пропустите накладные расходы на загрузку 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();
3 голосов
/ 07 июля 2011

Вы можете сохранить XML в потоке памяти, а затем сохранить полученный байтовый массив в столбце varbinary:

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

В идеале вам следует переключиться на столбец типа XMLхотя если возможно (т.е. SQL Server) или просто nvarchar.

...