Я сериализую некоторые данные перед тем, как вставить их в БД.
Dim insertString As String = "INSERT INTO GP_SELECTION(SOCIETE, NAME, OBJECT_TYPE, DATA) VALUES ('{0}','{1}',{2},'{3}')"
Dim xmlData As String = .XmlFromFilters()
insertString = String.Format(insertString, societe, .Name, CInt(.ObjectType), xmlData)
Теперь, когда я делаю вставку, sql похож на
INSERT INTO GP_SELECTION(SOCIETE, NAME, OBJECT_TYPE, DATA) VALUES ('01','hello world!!!',0,
'<?xml version="1.0" encoding="utf-16"?>
<ArrayOfPropertyFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PropertyFilter>
<AndOr>SOME DATA</AndOr>
<Value xsi:type="xsd:string" />
</PropertyFilter>
</ArrayOfPropertyFilter>')
и сервер SQl дает мне:
Синтаксический анализ XML: строка 1, символ 38, невозможно переключить кодировку
Интересно, как этого избежать ... Стоит ли конвертировать Unicode (UTF) insertString
? Как? Или, может быть, я должен использовать метод SQL для преобразования?
Может быть, решением будет удалить из сериализованной строки "encoding="utf-16"
" (тогда вставка работает без проблем) ...?
PS. Для предотвращения необычных комментариев, на самом деле, я не использую хранимые процедуры и использую прямой код INSERT. Я признаю, что это не лучший способ сделать это, но, тем не менее, это мой выбор в настоящее время.