C#でDataRowからバイト配列を読み取るにはどうすればよいですか?
-
08-07-2019 - |
質問
TableAdapter
を介して単一の DataRow
を正しく埋める DataTable
を持つ DataSet
があります。
次のようなコードを使用して、DataRowからデータを取得できます。
dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
varbinary(max)
型のDataFileという別の列があります。
上記と同じ DataRow
からその列のデータをプルしようとすると、何も得られません。
byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
この場所にブレークポイントを置くと、dataFileDataRowを調べ、ItemArrayプロパティを調べて、バイナリデータがItemArrayの位置5にあることを確認できます。
インデックスを使用してItemArrayに直接アクセスしようとしましたが、バイト配列がfileFromDatabase変数にコピーされていません。
fileFromDatabaseを時計に追加すると次のエラーが発生することにも気付きました:
"名前「fileFromDatabase」は現在のコンテキストに存在しません"
実行はまだfileFromDatabaseの定義と同じブロックにあるため、どのようにコンテキストから外れるかはわかりません。
Visual Studioの構成をデバッグではなくリリースに設定しました。これにより、fileFromDatabaseを調べようとしたときに探していたリアルタイムのデバッグ情報が表示されなくなりました。リリースからデバッグに切り替えた後、ウォッチで変数を見ることができ、上記のコードが正しく機能していることを確認できます。
解決
上記のコードは機能します。リリース用ではなく、デバッグ用にコンパイルするようにデバッガを設定してください。
キース
所属していません StackOverflow