このプロジェクトでは、ExecuteDataReader
,ExecuteScalar
などのような共通データアクセス用のADO.NETをラップするクラスがあります。 C#からSQL Serverストアドプロシージャにbyte []を渡してvarbinary(MAX)に変換する方法
ストアドプロシージャを呼び出すために、これらの方法を使用して、それはあなたがパラメータのDictionary<string, string>
次いでSqlParameter
としてSqlCommand
オブジェクトに追加される(文字列キー、文字列値)、通過させます。
データベースに文書を保存する必要がある場合があります。文書はbyte[]
であり、データベースの対応する列はvarbinary(MAX)
です。
解決策を探しましたが、利用可能なのはSqlDbType.Varbinary
を使用した例です。この状況ではオプションではありません。
私たちの最新の試みは、バイナリ文字列にbyte[]
を変換しようnvarchar(max)
としてストアドプロシージャにそれを渡し、Document
テーブルに保存するときにCONVERT(varbinary(max), @theFileBinaryString)
を使用していた、しかし、これは、破損したファイルが保存されます。
@DocumentContentAsBinary nvarchar(max) -- This is "documentAsBinary" from C# above
DECLARE @DocumentContentVarbinary varbinary(max);
SET @DocumentContentVarbinary = CONVERT(varbinary(max), @DocumentContentAsBinary);
感謝を。残念ながら、SqlCommandオブジェクトを完全に制御することはできず、ファイルをnvarchar(max)として渡す必要があります。 – thiag0