我要加入图片到XQXXB表中去
var
picture1:Tpicture;
begin
picture1:=Tpicture.Create;
If OpenPictureDialog1.Execute Then
begin
picture1.LoadFromFile(OpenPictureDialog1.FileName);
XQXXB.FieldByName('照片').Assign(picture1);
end;
添加后保存老是报错:invaild blob length
sqlserver 存储图片的字段是用的image 类型
是bde的问题还是sqlserver的问题
用ado连接好象就没有这样的问题
请问该如何解决才好
var
picture1:Tpicture;
begin
picture1:=Tpicture.Create;
If OpenPictureDialog1.Execute Then
begin
picture1.LoadFromFile(OpenPictureDialog1.FileName);
XQXXB.FieldByName('照片').Assign(picture1);
end;
添加后保存老是报错:invaild blob length
sqlserver 存储图片的字段是用的image 类型
是bde的问题还是sqlserver的问题
用ado连接好象就没有这样的问题
请问该如何解决才好
procedure TForm1.Button1Click(Sender: TObject);
var
MfileStream : Tfilestream;
MStringStream : TStringStream;
XQXXB : Tadoquery;
begin
If OpenPictureDialog1.Execute Then
begin
try
XQXXB:=Tadoquery.Create(self);
XQXXB.Connection:=ADOConnection1;
MfileStream.Create(OpenPictureDialog1.FileName,fmOpenRead);
MStringStream:=TStringStream.Create('');
MStringStream.CopyFrom(MfileStream,MfileStream.Size);
XQXXB.SQL.Add('Insert into XQXXB ( 照片 ) values (:zhaopian)');
XQXXB.Parameters.ParamByName('zhaopian').LoadFromStream(MStringStream,ftBlob);
XQXXB.ExecSQL;
finally
freeandnil(MfileStream);
freeandnil(XQXXB);
freeandnil(MStringStream);
end;
end;
end;
var
MyJPEG : TJPEGImage;
MS: TMemoryStream;
begin
MyJPEG := TJPEGImage.Create;
try
with MyJPEG do
begin
Assign(Image.Picture.Graphic);
MS:=TMemoryStream.create;
SaveToStream(MS);
MS.Position:=0;
Table1.Edit;
TBlobField(Table1.FieldbyName('Image')).LoadFromStream(MS);
Table1.Post;
messagebox(getactivewindow(),'图像保存完毕!','保存',mb_ok);
end;
finally
MyJPEG.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var tempstream:TStringStream;
tempjpeg:TJPEGImage;
begin
try
tempstream:=TStringStream.Create(' ');
TBlobField(Query1.FieldByName('Image')).SaveToStream(tempstream);
tempstream.Position:=0;
tempjpeg:=TJPEGImage.Create;
tempjpeg.LoadFromStream(tempstream);
DBImage1.Picture.Bitmap.Assign(tempjpeg);
finally
tempstream.Free;
tempjpeg.Free;
end;
end;