TClientDataSet在将jpg图片存到SQL2000数据库中的问题?如果不是TClientDataSet而是TADOQuery类型则没有问题?
function TFm_TrainingAbout.ImageWrite(TrainID,FileName: string; tmpQuery: TClientDataSet): Boolean;
const
JPEG_FLAG_BEGIN = $D8FF;
JPEG_FLAG_END = $D9FF;
var
JpegStream:TMemoryStream;
Jpeg:TJpegimage;
Imageproperty:TFileStream;
Flag1,Flag2:word;
begin
try
Result := false;
JpegStream:=Tmemorystream.Create;
jpeg:=TJpegimage.create;
Imageproperty:=TFileStream.Create(FileName,fmOpenRead);
Imageproperty.Read(Flag1,SizeOf(Flag1));
Imageproperty.Position:=Imageproperty.Size-2;
Imageproperty.Read(Flag2,sizeOf(Flag2));
if not (flag1=JPEG_FLAG_BEGIN) and (flag2=JPEG_FLAG_END) then
begin
showmessage('您上传的图片格式不是*.JPEG格式!请先转换!');
JpegStream.Free;
Imageproperty.Free;
exit;
end;
Imageproperty.Free;
jpeg.LoadFromFile(FileName);
JpegStream.Position:=0;
Jpeg.SaveToStream(JpegStream);
if JpegStream.Size = 0 then
begin
showmessage('0');
Exit;
end;
try
with tmpQuery do
begin
Close;
CommandText := 'update Training set photo=:Jimage where TrainID = '+QuotedStr(trim(TrainID));
tmpQuery.Params.ParamByName('Jimage').LoadFromStream(JpegStream,ftBlob);
Execute
end;
JpegStream.Free;
Jpeg.Free;
except end;
Result := true ;
Except end;
end;
这段代码执行没有问题,但图片存到数据库后就不能读出,报“jpeg Error #53”错误,显然是数据格式错了?
TClientDataSet存image就不能吗?