首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定BLOB列的大小

确定BLOB列的大小
EN

Stack Overflow用户
提问于 2011-01-10 22:41:04
回答 2查看 1.2K关注 0票数 2

我从一个数据库中拉取一个BLOB并存储在一个字节数组中。最初,它被定义为与DB上的BLOB列大小相同,这是相当大的。

代码语言:javascript
复制
int maxsize = 20971520;
int thisSize;
Byte[] picture = new Byte[maxsize];

所以我抓取了这个斑点:

代码语言:javascript
复制
rdr.GetBytes(3, 0, picture, 0, maxsize);

然后将其写入磁盘:

代码语言:javascript
复制
FileStream fstream = new FileStream(ImageFullName,FileMode.OpenOrCreate,FileAccess.Write);
BinaryWriter bwriter = new BinaryWriter(fstream);
bwriter.Write(picture);
bwriter.Flush();
bwriter.Close();
fstream.Close();

问题是这些blob中大多数都比maxsize小得多,那么如何将Byte数组调整为blob列的实际大小呢?

EN

回答 2

Stack Overflow用户

发布于 2011-01-10 22:46:02

为什么不查询一下字段的长度,这样第一次byte[]的大小就是正确的。

来自MSDN

如果传递的缓冲区为null,则GetBytes返回整个字段的长度(以字节为单位),而不是根据缓冲区偏移量参数返回剩余大小。

所以你的代码会变成

代码语言:javascript
复制
long length = rdr.GetBytes(3, 0, null, 0, maxsize);

Byte[] picture = new Byte[length];

rdr.GetBytes(3, 0, picture, 0, length);
票数 2
EN

Stack Overflow用户

发布于 2011-01-10 22:44:14

使用Array.Resize(ref T[] array, int newSize)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4647942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档