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

このメソッドは VBCollection を使用したため、Collection を使用しているだけです。

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 に答える