C# 使用microsoft企业库获取sql varbinary记录
我有这行代码C# 使用microsoft企业库获取sql varbinary记录,c#,sql,varbinary,C#,Sql,Varbinary,我有这行代码 byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value; 这是一个SqlDataReader 我正在尝试将代码转换为使用企业库数据访问块,但不知道如何使用IDataReader获取byte[] 我仔细查看了MS文档,但没有找到任何有用的东西。我要尝试的第一件事是(其中I是reader.GetOrdinal(“Field1”)): 如果失败,也许: byte[] secondTry; using
byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value;
这是一个SqlDataReader
我正在尝试将代码转换为使用企业库数据访问块,但不知道如何使用IDataReader
获取byte[]
我仔细查看了MS文档,但没有找到任何有用的东西。我要尝试的第一件事是(其中
I
是reader.GetOrdinal(“Field1”)
):
如果失败,也许:
byte[] secondTry;
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[8040]; // sql page size
int read;
long offset = 0;
while ((read = (int)reader.GetBytes(i, offset, buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
offset += read; // oops! added this later... kinda important
}
secondTry = ms.ToArray();
}
还请注意,行为可能会略有变化,具体取决于是否指定了
CommandBehavior.SequentialAccess
。+1感谢标记。“第一件事”起了作用。看着它,我真不敢相信我没有那样做。联赛显然正在生效。是时候关闭visual studio并使用spotify了@马特-我很高兴第一步奏效-我错过了第二步的关键一步;为了“长尾”的好处,p现在固定了。
byte[] secondTry;
using (var ms = new MemoryStream())
{
byte[] buffer = new byte[8040]; // sql page size
int read;
long offset = 0;
while ((read = (int)reader.GetBytes(i, offset, buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
offset += read; // oops! added this later... kinda important
}
secondTry = ms.ToArray();
}