Как обновить строку XML в базе данных, не переходя от двойных кавычек в одинарные? - PullRequest
0 голосов
/ 03 февраля 2012

Мне нужно обновить часть строки xml в базе данных, но я не хочу переходить с двойных кавычек на одинарные, другими словами, я хочу сохранить двойные кавычки в строке xml. Этот вопрос основан на другом вопросе, который я нашел здесь

Следующее:

ExecuteNonQuery("Update Logs 
                 SET Message = '" + encryptedMessage.Replace('"','\'') + "' 
                 WHERE ID = " + message.Id);

Заменит двойные кавычки одинарными и сохранит их в БД, но я не хочу постоянно изменять кавычки.

Я пытаюсь это:

string sqlUpdate = "Update Logs SET Message = @Message where Id = @Id";
                SqlParameter id = new SqlParameter("@Id", message.Id);
                SqlParameter msg = new SqlParameter("@Message", message.Msg);

                Collection parameters = new Collection();
                parameters.Add(id);
                parameters.Add(msg);

                Data.ExecuteNonQuery(sqlUpdate,parameters);

Data.ExecuteNonQuery уже позаботится о связи для меня.

Я заметил, что sql, переданный методу ExecuteNonQuery, равен Update Logs SET Message = @Message where Id = @Id

Я просто использую Collection, потому что этот метод занял VBCollection.

1 Ответ

4 голосов
/ 03 февраля 2012

Используйте вместо этого параметризованный запрос и передайте свой XML как SqlParameter:

string sqlUpdate = "Update Logs set Message = @MESSAGE where ID = @ID";
using (SqlCommand cmd = new SqlCommand(sqlUpdate, someConnection))
{
    cmd.Parameters.Add(new SqlParameter("@MESSAGE", SqlDbType.Xml)).Value = encryptedMessage;
    cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.Int)).Value = message.Id;
    cmd.ExecuteNonQuery();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...