我要在SQL Server的Image字段中存储一个200K的JPEG文件,但是出现了“Invalid BLOB length.”的信息,试验后Image字段只能存储22K的JPEG文件,请问各路高手是不是Image字段只能存储22K的JPEG文件?我要存储一个200K的JPEG文件该怎么办?
解决方案 »
- 求助。北京人来
- 怎样将当前系统时间格式化字符串?
- 还是 “线程” 的问题!!!!!!!!!!!!!!!!!!!!
- 当数据库中一插入数据,在程序中就立刻执行某个动作,有什么办法解决?sql2000数据库+d7
- 线程间同步有哪些方法?各有什么特点??
- /@/@/@/看看大家期待已久的辛烷吧 Delphi.net
- 如何对TTABLE中的任意一个字段进行排序
- 以前问过的问题---如何用最快的速度从一个字段中选取特定的数据?现在改了条件,难度大了好几倍,请高手进来讨论讨论。
- 请问怎样在一个窗体中调用另一个窗体的Table组件?(在线等待)
- 如何用for循环语句遍历listview,并得到其中的内容阿 ??
- 浮点数据如何转化为二进制或十六进制?
- 几个组件如何保存在一个文件中。
你可以这样写
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;
方法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.请大家给我看看是什么地方不对了,谢谢了.
1.TMemoryStream ms;
2.TYourJpegImage.SaveToStream(ms);
3.TYourBlobField.LoadFromStrem(ms).
而如果你用BDE那么BDE大小有限制,你可以修改它!
用ADO好象没有限制(或许有我还没用到这么大)
把Database的
BLOB SIZE=32
改成
BLOB SIZE=10240