我有一个SqlDataReader并且需要使用SqlDataReader.GetBytes()方法从中读取varbinary(max)列。该方法填充了一个字节数组,因此需要知道要读取多少长度的数据。
这就是让我困惑的地方...显然,我想要读取从数据库返回的所有数据在这一行/列,所以我应该传递什么'长度'参数?
据我所见,SqlDataReader并没有提供任何方法来发现可用的数据长度,因此我觉得这个方法相当麻烦。
我倾向于只需在此处传递int.MaxValue,然后忘记这个问题,但是这种做法让我感到不舒服。
我知道我可以调用
这就是让我困惑的地方...显然,我想要读取从数据库返回的所有数据在这一行/列,所以我应该传递什么'长度'参数?
据我所见,SqlDataReader并没有提供任何方法来发现可用的数据长度,因此我觉得这个方法相当麻烦。
我倾向于只需在此处传递int.MaxValue,然后忘记这个问题,但是这种做法让我感到不舒服。
我知道我可以调用
byte[] value = (byte[])dataReader["columnName"];
...这似乎完全在内部解决了长度问题。 然而,我正在使用一组复杂的代码生成模板,这些模板是围绕SqlDataReader.GetXXXX()
方法构建的。所以我必须使用GetBytes
并且需要了解其正确用法。