2

これは実際には質問ではなく、助けが見つからなかった問題なので、他の誰かが遭遇した場合に備えて、最終的に見つけた解決策を投稿すると思いました.

問題は、SQL Server 2008 ストアド プロシージャに渡していた TVP パラメータの XML 型の列にありました。ExecuteNonQuery() を呼び出すと、次のようなエラーが発生しました

追加情報: XML 解析: (行番号何とか何とか) エンコーディングを切り替えることができません (何とか何とか)

これは、XML が通常どおり UTF-8 として指定されたためです。

<?xml version="1.0" encoding="UTF-8" ?>

ただし、.NET の文字列は UTF-16 です。解決策は、DataTable で XML を含む列をバイト配列として宣言することでした。

hitImport.Columns.Add("Answer", typeof(byte[]));

次に、行を追加するときに UTF-8 バイトを取得します。

row["Answer"] = Encoding.UTF8.GetBytes(assignment.Answer);

ADO.NET エンジンは、バイトを XML に変換する方法を認識しています。それが誰かを助けることを願っています!

4

0 に答える 0