Image字段的存取问题?急呀?高手请入!!!!!不胜感激。

liqing7165 2005-08-27 02:50:25
ImgStream: TMemoryStream; // 存放 的流

ImgStream := TMemoryStream.Create;
TBlobField(FieldByName('Image')).SaveToStream(ImgStream);
ImgStream.SaveToFile('C:\IMG.PPP');
ImgStream.Free;
为什么我保存的文件只有32K呀?我把BDE的BLOB SIZE的大小调到很大,
但是文件的大小最大资源604K??

WHY??狂郁闷呀?????
...全文
124 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
无风飞尘 2005-08-27
  • 打赏
  • 举报
回复
TBlobField(DataSet1.FieldByName('Image')).LoadFromFile('C:\IMG.PPP');
hthunter 2005-08-27
  • 打赏
  • 举报
回复
楼主的问题所在应该是ImgStream.SaveToFile之前没有ImgStream.Seek(0, 0);
不过TBlobField可以直接存取文件了,中间不需要再经过TMemoryStream了,直接这样既可:
TBlobField(DataSet1.FieldByName('Image')).SaveToFile('C:\IMG.PPP');
liqing7165 2005-08-27
  • 打赏
  • 举报
回复
tbolbstrean怎么使用?
chwdong 2005-08-27
  • 打赏
  • 举报
回复
用tbolbfield+tbolbstrean
liqing7165 2005-08-27
  • 打赏
  • 举报
回复
为什么,BDE不能保存大的文件吗?这个应该不是主要原因吧?
sjg0317 2005-08-27
  • 打赏
  • 举报
回复
必须使用ADO控件
liqing7165 2005-08-27
  • 打赏
  • 举报
回复
可是怎么解决我保存后文件的大小的问题呀?
lovcal 2005-08-27
  • 打赏
  • 举报
回复
通常情况下,text、ntext 或 image 字符串是存储在数据行外的大型(可达 2GB)字符或二进制字符串。数据行只包括一个 16 字节的文本指针,该指针指向一个树的根节点,该树由映射存储串片段的页的内部指针构成。

使用 Microsoft SQL Server,可将小型到中型的 text、ntext 和 image 值存储在一个数据行中,从而提高访问这些值的查询速度。

当 text、ntext 或 image 串被存储在数据行时,SQL Server 就无须访问单独的页或页的集合来读写这些串。这使得读写 text、ntext 或 image 这些行中的串就象读写 varchar、nvarchar 或 varbinary 串一样快。

为了在数据行中存储 text、ntext 或 image 字符串,必须使用 sp_tableoption 存储过程启动 text in row 选项。

sp_tableoption N'MyTable', 'text in row', 'ON'

可以为在数据行中存储的 text、ntext 和 image 字符串指定一个从 24 到 7000 字节的最大长度(可选):

sp_tableoption N'MyTable', 'text in row', '1000'

如果指定的是"ON"而不是一个特定的限度,则此限度的默认值为 256 字节。这个默认值提供大部分的性能收益:这个值足够大,可以保证小型字符串和根文本指针存储在行中;但又不是过大,以致将每页的行减少得太多,从而影响了性能。

尽管在通常情况下,不应将此值设为低于 72,但也不应把此值设得过高,特别是对那些大多数语句都不引用 text、ntext 和 image 列的表格或者具有多个 text、ntext 和 image 列的表格。

也可以使用 sp_tableoption 关闭此选项,这可以通过指定"OFF" 或 0 选项值来实现。

sp_tableoption N'MyTable', 'text in row', 'OFF'


2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧