Boy Balantoy Ответов: 1

Почта Outlook не корректна при сохранении в базе данных SQL server


Привет. У меня есть серьезная проблема,которую необходимо немедленно решить в связи с приближающимся крайним сроком. Всякий раз, когда я сохраняю тело почты outlook в своей базе данных sql server, содержимое сообщения каким-то образом перепутывается. Вот иллюстрация моей проблемы:

ropbox - Outlook.jpg[^]

Как вы можете видеть, мне нужно сохранить исходное сообщение, чтобы правильно проанализировать данные сообщения, которые оно содержит, поскольку оно непосредственно вставляет записи в мою базу данных. Но поскольку он содержит ошибочные данные при сохранении, мое приложение терпит неудачу каждый раз, когда я вызываю инструкцию insert sql из-за несоответствия данных.

Я не делал никакого специального форматирования в своем коде. Это как-то выглядит так :


'x marks the index number of the current mail item being processed
Dim oMsg As Outlook.MailItem = msgItm.Item(x) 
QRY = "Insert into mytable( ..., msgbody) values (...,oMsg.Body)


затем выполните executenonquery, и ошибок не будет. Но когда я смотрю на сохраненные значения, данные столбца msgbody уже перепутаны. Я действительно ошарашен тем, как правильно устранить эту проблему. Я был бы очень признателен за любые подсказки или помощь от кого-либо о том, как решить эту проблему. Заранее большое спасибо и с нетерпением ждем ваших немедленных отзывов :)

Что я уже пробовал:

пытался удалить новые символы строки, но все равно ничего не получалось. попробовал заменить пробелы подчеркиванием, но получил тот же результат. :(

Richard MacCutchan

Нет никакого способа ответить на этот вопрос. Вам нужно использовать свой отладчик, чтобы точно проверить, какие данные извлекаются из сообщения.

Boy Balantoy

Привет, Ричард. Я уже пробовал это сделать, и данные, которые я ожидал увидеть, действительно показываются отладчиком, я даже поставил точки останова для каждой отдельной вставки строки/столбца, чтобы попытаться зафиксировать ошибку безрезультатно. Вот почему я ошеломлен тем, что не так с системой, которую я разрабатываю...

Richard MacCutchan

Что ж, боюсь, здесь никто не может догадаться, что происходит. Вам нужно сделать больше отладки, чтобы следить за этими данными до самого конца в вашей базе данных и обратно. Очевидно, что он либо поврежден где-то в вашем коде, либо дисплей каким-то образом неправильно его интерпретирует.

1 Ответов

Рейтинг:
12

NightWizzard

Думаю, что решение простое, но прежде всего: я надеюсь, что приведенный выше пример кода содержит синтаксическую ошибку только потому, что вы упростили оператор? В противном случае statemt должен выглядеть следующим образом:

QRY = "Insert into mytable( ..., msgbody) values (...,'" & oMsg.Body & "')"


Во-вторых: если вы используете строковый столбец (varchar или nvarchar) и тело сообщения содержит символы, которые имеют особое значение в языке SQL, это приведет к синтаксической ошибке при выполнении QRY. Вам нужно либо найти и заменить или экранировать все символы, которые могут вызвать синтаксическую ошибку, либо (лучше) использовать класс SQLCommand с параметром для правильной вставки значения (это также предотвратит внедрение SQL, если сообщение содержит инструкцию SQL).


Boy Balantoy

Привет, Ночной Змей. Уже решен через несколько дней после публикации, сделав именно то, что вы заявили. Тем не менее, большое спасибо, так как этот пост может быть пережит другими людьми, и ваш ответ поможет им в правильном направлении. Ура, приятель.