在SQL Server中存储JPEG图象文件最大能存多少K?

nihaolinchen 2003-07-08 02:45:48
我要在SQL Server的Image字段中存储一个200K的JPEG文件,但是出现了“Invalid BLOB length.”的信息,试验后Image字段只能存储22K的JPEG文件,请问各路高手是不是Image字段只能存储22K的JPEG文件?我要存储一个200K的JPEG文件该怎么办?
...全文
64 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_shyng 2003-07-10
  • 打赏
  • 举报
回复
如果是用的BDE
把Database的
BLOB SIZE=32
改成
BLOB SIZE=10240

redhaifeng 2003-07-09
  • 打赏
  • 举报
回复
Sqlserver可以寸2G
而如果你用BDE那么BDE大小有限制,你可以修改它!
用ADO好象没有限制(或许有我还没用到这么大)
支持中文哦 2003-07-09
  • 打赏
  • 举报
回复
用image字段肯定没问题,
1.TMemoryStream ms;
2.TYourJpegImage.SaveToStream(ms);
3.TYourBlobField.LoadFromStrem(ms).
东八泰 2003-07-09
  • 打赏
  • 举报
回复
用BDE时因为BDE引擎的问题,而且BDE的设置字段大小是有限制的,因此用BDE时会碰到那样的问题,用ADO就不会了。
nihaolinchen 2003-07-08
  • 打赏
  • 举报
回复
我用了3 种方法,代码如下:
方法1:
Var
jpeg: TjpegImage;
Bmp:TBitmap;
begin
jpeg:= TJPEGImage.Create;
If OPenPictureDialog1.Execute Then
try
jpeg.LoadFromFile(OpenPictureDialog1.FileName);
try
bmp:= TBitmap.Create;
bmp.Assign(jpeg);
with Table1 do
begin
Append;
FieldByName('ImagePhoto').Assign(bmp);
Post;
end;
finally
bmp.free
end;
finally
jpeg.free
end;

end;

方法2:
Var
MemSt: TMemoryStream;
begin
MemSt := TMemoryStream.Create;
If OpenPictureDialog1.Execute Then
Try
MemSt.LoadFromFile(OpenPictureDialog1.FileName);
Table1.Append;
(Table1.FieldByName('Imagephoto') as TBlobField).LoadFromStream(MemSt);

Table1.Post;
Finally
MemSt.Free;
End;
end;

方法3:
Var
jpeg: TjpegImage;
Bmp:TBitmap;
begin
jpeg:= TJPEGImage.Create;
If OPenPictureDialog1.Execute Then
try
jpeg.LoadFromFile(OpenPictureDialog1.FileName);
try
bmp:= TBitmap.Create;
bmp.Assign(jpeg);
with Table1 do
begin
Append;
FieldByName('ImagePhoto').Assign(bmp);
Post;
end;
finally
bmp.free
end;
finally
jpeg.free
end;
end;

但是运行到POST时,或是在其他地方使用REFRESH都会报错:Invalid BOLB length.
BDE 中BLOB SIZE 设置为32K,BOLB BOLB TO CACHE 的设置为64K.

请大家给我看看是什么地方不对了,谢谢了.
things 2003-07-08
  • 打赏
  • 举报
回复
设置BDE或DATABASE的BLOB SIZE,将其值设的大一些(单位K)默认值较小。
applebomb 2003-07-08
  • 打赏
  • 举报
回复
恩,BLOB字段可以放2G大小的。

显示的话按流的方式读入JPEG数据应该可以的。
liulangnanhai 2003-07-08
  • 打赏
  • 举报
回复
為什么很難顯示出來呢?
zjm107 2003-07-08
  • 打赏
  • 举报
回复
兄弟,这样的问题用100分值得吗,哎
xiaoqlj 2003-07-08
  • 打赏
  • 举报
回复
你以流的形式存,存个几G都没问题啊!
blueshu 2003-07-08
  • 打赏
  • 举报
回复
我想足够你用的了
cow8063 2003-07-08
  • 打赏
  • 举报
回复
可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间
火龙岛主 2003-07-08
  • 打赏
  • 举报
回复
2G没有问题的!
Maple119 2003-07-08
  • 打赏
  • 举报
回复
就是呀.SQLServer不会这么差的.只存22K的内容,不可能.
newsofter 2003-07-08
  • 打赏
  • 举报
回复
image大小为2 147 483 647字节即2GB
你可以这样写
jpeg:= TJPEGImage.Create;
try
jpeg.LoadFromFile(filename);
try
bmp:= TBitmap.Create;
bmp.Assign(jpeg);
with ADOQuery_image do
begin
edit;
ADOQuery_imagefield1.Assign(bmp);
end;
finally
bmp.free
end;
finally
jpeg.free
end;
zxtyhy 2003-07-08
  • 打赏
  • 举报
回复
不会吧!
再大点的也能存啊

2,497

社区成员

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

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