質問

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を調べようとしたときに探していたリアルタイムのデバッグ情報が表示されなくなりました。リリースからデバッグに切り替えた後、ウォッチで変数を見ることができ、上記のコードが正しく機能していることを確認できます。

役に立ちましたか?

解決

上記のコードは機能します。リリース用ではなく、デバッグ用にコンパイルするようにデバッガを設定してください。

キース

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top