0

我需要更新数据库中 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已经为我处理好连接了。

我注意到传递给 ExecuteNonQuery 方法的 sql 是Update Logs SET Message = @Message where Id = @Id

我只是使用 Collection,因为该方法采用了 VBCollection。

4

1 回答 1

4

改用参数化查询并将您的 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();
}
于 2012-02-03T17:27:43.657 回答