如何将图象存入sql server数据库?(50分)

  • 主题发起人 主题发起人 rain
  • 开始时间 开始时间
R

rain

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个picture控件绑定到sql server数据库,
当picture载入图象后,保存记录,但是移动记录后,
图象仍然没有显现出来。请问这是为什么?
 
如果是通过BDE连接SQL SERVER,将BDE中BLOB SIZE的值适应调大
 
我的可以
 
想问问你,究竟存入了什么类型的图象?
我试过了,不管BDE的设置如何,总可以OK的啊!若再不行,写个控件好了。

以下是我的源代码,只给出OnUpdateData和OnDataChange两个TFieldDataLink事件。

TDbJPEGImage = class(TImage)
.....
end;

procedure TDbJPEGImage.DoUpdateData;
var Fld: TBlobField;
Strm: TMemoryStream;
Jpeg: TJPEGImage;
begin
if not Assigned(FDataLink.DataSet) then
Exit;
if not (FDataLink.Field is TBlobField) then
Exit;
Fld := FDataLink.Field as TBlobField;

Strm := TMemoryStream.Create();
Jpeg := TJPEGImage.Create();
try
if (Picture = nil) or
(Picture.Graphic = nil) then
begin
Fld.Clear();
end
else
begin
Jpeg.Assign(Picture.Graphic);
Jpeg.SaveToStream(Strm);
Strm.Position := 0;
Fld.LoadFromStream(Strm);
end;
finally
Strm.Free();
Jpeg.Free();
end;
end;

procedure TDbJPEGImage.DoDataChange(Sender: TObject);
var Fld: TBlobField;
Strm: TMemoryStream;
Jpeg: TJPEGImage;
begin
if not (FDataLink.Field is TBlobField) then
Exit;
Fld := FDataLink.Field as TBlobField;
if Fld.IsNull then
begin
Picture := nil;
Exit;
end;

Strm := TMemoryStream.Create();
Jpeg := TJPEGImage.Create();
FLoadingFromDataSet := True;
try
Fld.SaveToStream(Strm);
Strm.Position := 0;
Jpeg.LoadFromStream(Strm);
Picture.Assign(Jpeg);
finally
Strm.Free();
Jpeg.Free();
end;
end;

 
多谢Bacchus,guerilla,wangfu,其实我用的是VB,我以为Delphi和VB
在处理图象是相同的,但好象差了很多,现在已经解决了,但还是感谢
三位的热情帮助.

rain
 
多人接受答案了。
 
后退
顶部