使用TMemoryStream和TBlobField来实现 如: var a : TMemoryStream; a:=TMemoryStream.Create; image1.Picture.Bitmap.SaveToStream(a); TBlobField(query1.FieldByName('字段名')).LoadFromStream(a); query1.Post; 写的过程正好相反
或: procedure TForm1.DBSaveToClick(Sender: TObject); var Str : String; Jpeg : TJPEGIMAGE; bmp :TBitmap; begin if Adotable1.FieldByName('pic').AsString ='' then exit else begin bmp:=TBitmap.Create; bmp.Assign(DBImage1.Picture.Bitmap); end; if savePicturedialog1.Execute then begin Str := ExtractFileExt(savePictureDialog1.filename); Str := Copy(Str,2,3); //仅支持bmp和jpg格式 if Str = 'bmp' then bmp.SaveToFile(savePicturedialog1.FileName) else if Str = 'jpg' then begin Jpeg := TJPEGIMAGE.Create; Jpeg.Assign(bmp); Jpeg.SaveToFile(savePictureDialog1.FileName); end else ShowMessage('不支持其它格式!'); end; end;
cg1120你好: 我现在是如果这个表中含有二进制字段,则TABLE 的 ACTIVE 置为 TRUE 时会出现错误!
//To write to Blob; procedure TForm1.Button1Click(Sender: TObject); var blob: TBlobStream; begin blob := myDataset.CreateBlobStream(myDataset.FieldByName('myBLOB_test'), bmWrite); try blob.Seek(0, soFromBeginning); fs := TFileStream.Create('E:\myFile.JPG', fmOpenRead or fmShareDenyWrite); try blob.CopyFrom(fs, fs.Size) finally fs.Free end; finally blob.Free end; end;
// To load from BLOB: procedure TForm1.Button1Click(Sender: TObject); var blob: TBlobStream; begin blob := myDataset.CreateBlobStream(myDataset.FieldByName('myBLOB_test'), bmRead); try blob.Seek(0, soFromBeginning); with TFileStream.Create('E:\myFile.JPG', fmCreate) do try CopyFrom(blob, blob.Size) finally Free end; finally blob.Free end; end;
如:
var a : TMemoryStream;
a:=TMemoryStream.Create;
image1.Picture.Bitmap.SaveToStream(a);
TBlobField(query1.FieldByName('字段名')).LoadFromStream(a);
query1.Post;
写的过程正好相反
procedure TForm1.DBSaveToClick(Sender: TObject);
var
Str : String;
Jpeg : TJPEGIMAGE;
bmp :TBitmap;
begin
if Adotable1.FieldByName('pic').AsString ='' then
exit
else begin
bmp:=TBitmap.Create;
bmp.Assign(DBImage1.Picture.Bitmap);
end;
if savePicturedialog1.Execute then
begin
Str := ExtractFileExt(savePictureDialog1.filename);
Str := Copy(Str,2,3);
//仅支持bmp和jpg格式
if Str = 'bmp' then bmp.SaveToFile(savePicturedialog1.FileName)
else if Str = 'jpg' then
begin
Jpeg := TJPEGIMAGE.Create;
Jpeg.Assign(bmp);
Jpeg.SaveToFile(savePictureDialog1.FileName);
end
else
ShowMessage('不支持其它格式!');
end;
end;
我现在是如果这个表中含有二进制字段,则TABLE 的 ACTIVE 置为 TRUE 时会出现错误!
procedure TForm1.Button1Click(Sender: TObject);
var
blob: TBlobStream;
begin
blob := myDataset.CreateBlobStream(myDataset.FieldByName('myBLOB_test'), bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create('E:\myFile.JPG', fmOpenRead or
fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size)
finally
fs.Free
end;
finally
blob.Free
end;
end;
// To load from BLOB:
procedure TForm1.Button1Click(Sender: TObject);
var
blob: TBlobStream;
begin
blob := myDataset.CreateBlobStream(myDataset.FieldByName('myBLOB_test'), bmRead);
try
blob.Seek(0, soFromBeginning);
with TFileStream.Create('E:\myFile.JPG', fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;
end;
用 AD0TABLE 连接表时(含有二进制字段,类型为 BLOB ),ACTIVE 置为 TRUE 时会出现错误!是否,我的ORACLE 数据库中的表设置有问题,我是用 SQL 语句创建的表,手工创建也用过。是否有其它设置,烦请告知!!!