1.读
TBlobField(qryTemp.fieldbyname('字段名称')).SavetoFile(文件名);
或 TBlobField(qryTemp.fieldbyname('字段名称')).SavetoStream(stream);
2.存
TBlobField(qryTemp.fieldbyname('字段名称')).loadfromFile(文件名);
或 TBlobField(qryTemp.fieldbyname('字段名称')).loadfromStream(stream);
qryTemp.post;
TBlobField(qryTemp.fieldbyname('字段名称')).SavetoFile(文件名);
或 TBlobField(qryTemp.fieldbyname('字段名称')).SavetoStream(stream);
2.存
TBlobField(qryTemp.fieldbyname('字段名称')).loadfromFile(文件名);
或 TBlobField(qryTemp.fieldbyname('字段名称')).loadfromStream(stream);
qryTemp.post;
TBlobField *pField=(TBlobField *)Query->FieldByName("字段名");
TBlobStream *pStream=new TBlobStream (pField,bmReadWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap *pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pStream);//读delete pBitmap;
delete pStream;////Write
Query->Edit();
TBlobField * pField=(TBlobField *)Query->FieldByName("字段名");
TBlobStream * pStream=new TBlobStream (pField,bmReadWrite);
pStream->Seek(0,soFromBeginning);pBitmap->SaveToStream(pStream);//写delete pStream;
Query->Post();
现在用这个方法可以成功。即,把IMAGE当作Blob字段来处理。这样,可使存储图象的字段长度与文件一样大。写IMAGE
with Query1 do
begin
sql.clear;
sql.add('INSERT INTO TBIMAGE(id,filename,image) VALUES(1,:filename,:IMAGE)');
params[0].AsString := OpenPictureDialog1.FileName;
params[1].LoadFromFile(OpenPictureDialog1.FileName,ftGraphic);
execsql;
end;
读Image,我现在是把它放在文件中,之后处理就非常方便了
var
t:TBlobField;
begin
with Query1 do
begin
sql.Clear;
sql.Add('select id,filename,image from tbimage');
open;
while not eof do
begin
SavePictureDialog1.InitialDir := ExtractFilePath(FieldByName('filename').AsString);
if SavePictureDialog1.Execute then
begin
t := FieldByName('IMAGE') As TBlobField;
t.SaveToFile(SavePictureDialog1.FileName);
end;
next;
end;
end;