Как программно вставить XML в лист Excel? - PullRequest
0 голосов
/ 05 августа 2011

Я использую OleDbConnection для записи некоторых данных в электронную таблицу.Несколько столбцов этих данных включают XML (не данные в XML, а сам XML).Однако, когда я пытаюсь вставить, используя ExecuteNonQuery (), я получаю следующее OleDbException: Синтаксическая ошибка (отсутствует оператор) в выражении запроса '""'

В последнее время я пробовал что-то вроде

...
command.CommandText = "INSERT INTO (Column1) VALUES(""<MyElement name="Name"/>"")";

, чтобы сделать это.Кажется, что кавычки вокруг «Имени» - это то, что отбрасывает все.

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 05 августа 2011

Вы должны использовать escape-символы для выражения ваших кавычек как буквальных кавычек, а не как операций.Это может быть сложно, так как в C # есть экранирующие символы, а в SQL также экранирующие символы.

Например, в C # для передачи символа «в строку» необходимо использовать:

string quoted = "\"Quoted String\"";

Оценка строки в кавычках вернет "Строка в кавычках" (включая кавычки)

Это позволит вам пройтикавычки в команде SQL. Однако SQL будет обрабатывать их как операторы кавычек, а не литералы кавычек, если только вы не используете escape-последовательность:

""Quoted String""

Таким образом, для каждого символа кавычки выЕсли вы хотите использовать как часть литерала в SQL-выражении, вы должны дважды ввести символ.

Предполагая, что escape-последовательность для "символа - это двойной набор кавычек" "в вашей реализации SQL, попробуйте использоватькак то так:

command.CommandText = "INSERT INTO (Column1) VALUES(\"<MyElement name=\"\"Name\"\"/>\")";

...