11

を介してシングルを正しく埋めるDataSetwith があります。DataTableDataRowTableAdapter

次のようなコードを使用して、DataRow からデータを取得できます。

dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];

type の DataFile という別の列がありますvarbinary(max)

上記と同じ列のデータを取得しようとすると、DataRow何も得られません。

byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];

この場所にブレーク ポイントを配置すると、dataFileDataRow を調べ、ItemArray プロパティを調べると、バイナリ データが ItemArray の 5 番目の位置にあることがわかります。

インデックスを使用して ItemArray に直接アクセスしようとしましたが、バイト配列が fileFromDatabase 変数にコピーされていません。

fileFromDatabase をウォッチに追加すると、次のエラーが発生することにも気付きました。

「名前 'fileFromDatabase' は現在のコンテキストに存在しません」

実行はまだ fileFromDatabase の定義と同じブロック内にあるため、それがどのように文脈から外れているのかわかりません。

Visual Studio の構成を Debug ではなく Release に設定しました。これにより、fileFromDatabase を調べようとしたときに探していたリアルタイムのデバッグ情報が表示されませんでした。リリースからデバッグに切り替えた後、ウォッチで変数を確認できるようになり、上記のコードが正しく機能していることを確認できます。

4

1 に答える 1

5

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

キース

于 2008-11-12T19:49:41.770 に答える