【问题标题】:How do you read a byte array from a DataRow in C#?如何从 C# 中的 DataRow 读取字节数组?
【发布时间】:2010-09-22 01:12:39
【问题描述】:

我有一个DataSet 和一个DataTable,它通过TableAdapter 正确填充单个DataRow

我可以使用如下代码从 DataRow 中提取数据:

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

我还有一个名为 DataFile 的列,类型为 varbinary(max)

当我尝试从与上述相同的 DataRow 中提取该列的数据时,我什么也得不到。

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

如果我在这个位置设置一个断点,我可以查看 dataFileDataRow,查看 ItemArray 属性并看到二进制数据位于 ItemArray 中的位置 5。

我尝试使用 ItemArray 的索引直接访问它,但字节数组没有被复制到 fileFromDatabase 变量。

我还注意到将 fileFromDatabase 添加到我的手表会产生此错误:

“当前上下文中不存在名称‘fileFromDatabase’”

执行仍然与 fileFromDatabase 的定义在同一个块中,所以我不明白它是如何脱离上下文的。

我将 Visual Studio 的配置设置为发布而不是调试。这导致我在尝试检查 fileFromDatabase 时看不到我正在寻找的实时调试信息。从 Release 切换到 Debug 后,我现在可以在手表中看到变量,并且可以验证上面的代码是否正常工作。

【问题讨论】:

  • 请说明您使用的语言。

标签: c# debugging bytearray tableadapter datarow


【解决方案1】:

上面的代码有效,请确保您将调试器设置为针对调试而不是发布进行编译。

基思

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多