设计了一个三层体系结构: 数据库: Sql server 2000 其他数据如字符、备注、数值等均可正常存储,修改。
但 将图片 bmp 或 jpg 加入到"photo"字段(类型为image)后,不能更新到远程数据库中. 即图片不能正常更新(加入)到远程数据库中... 如何解决,请高手们支持............
但 将图片 bmp 或 jpg 加入到"photo"字段(类型为image)后,不能更新到远程数据库中. 即图片不能正常更新(加入)到远程数据库中... 如何解决,请高手们支持............
MemStream : TMemoryStream;
begin
MemStream := TMemoryStream.Create;
MemStream.LoadFromFile( 'test.bmp' );
try
DataSet.Edit;
(TBlobField( DataSet.FieldByName('image字段'))).LoadFromStream( MemStream );
DataSet.Post;
finally
MemStream.free;
end;
end;
///////////////////////////////////////////////////
procedure TForm1.SpeedButton1Click(Sender: TObject);
var// tmpImage : TBitmap;
ts : TStream;
fs : TFileStream;
begin
if not OpenDialog1.Execute then exit;
//tmpImage := TBitmap.Create;
try
//tmpImage.LoadFromFile(OpenDialog1.FileName);
cdbsetUser.Edit;
ts := cdbsetUser.CreateBlobStream(cdbsetUser.FieldByName('photo'),bmReadWrite);
fs := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
try
ts.CopyFrom(fs,0);
//tmpImage.SaveToStream(ts);
finally
ts.Free;
fs.Free;
end;
//DBimage1.Picture.Assign(tmpImage);
finally
//tmpImage.Free;
end;
end;
//////////////////////////////////////////////////
无论使用TBitmap或TStream, 在按以上<<按钮>>后当前记录均可以显示出图片来,
但使用 cdbsetUser.ApplyUpdates(0); 后图片消失。查看数据库SQL server 2000数据,photo字段没有数据存在。
adoquery1.fieldvalues['...'].assagn(image1.pictrue.bitmp);
我也是这样做的