ADO存图片的几种方法,我都试过了,如下:但都不行,怎么回事,晕,请教高手。(一直在线)
var
Stream : TMemoryStream;
//jpegImage : TJPEGImage;
picstream:tadoblobstream;
Stream :=TMemoryStream.Create;
if FileExists(gInfo.info.carPicSource + '\show.jpg') then
begin
Stream.LoadFromFile(gInfo.info.carPicSource + '\show.jpg');
//jpegImage := TJPEGImage.Create;
//jpegImage.LoadFromFile(gInfo.info.carPicSource + '\show.jpg');
//jpegImage.SaveToStream(stream);
//jpegImage.Free;
stream.Position:=0;
end;
DMRoadWay.ADOTabImage.Close;
DMRoadWay.ADOTabImage.Open;
DMRoadWay.ADOTabImage.Insert;
DMRoadWay.ADOTabImage.Edit;
DMRoadWay.ADOTabImage.FieldByName('IMAGENO').AsString := strGuid;
//picstream:=tadoblobstream.Create(tblobfield(DMRoadWay.ADOTabImage.FieldByName('pic')),bmWrite);
//(TBlobField(DMRoadWay.ADOTabImage.FieldByName('PICTURE'))).LoadfromFile(gInfo.info.carPicSource + '\show.jpg');
//DMRoadWay.ADOTabImageIMAGENO.LoadFromStream(stream);
//(DMRoadWay.ADOTabImage.Fieldbyname('PIC') as TBlobField).LoadFromStream(stream);
TBlobField(DMRoadWay.ADOTabImage.FieldByName('PICTURE')).LoadFromStream(stream);
//(DMRoadWay.ADOTabImage.Fields[1] as TBlobField).LoadFromStream(stream);
DMRoadWay.ADOTabImage.Post;
Stream.Free;
{ DMRoadWay.ADOQueryImage.close;
DMRoadWay.ADOQueryImage.SQL.clear;
DMRoadWay.ADOQueryImage.SQL.add('select * from DB2ADMIN.test');
DMRoadWay.ADOQueryImage.open;
DMRoadWay.ADOQueryImage.edit; }
{ picstream:=tadoblobstream.Create(tblobfield(DMRoadWay.ADOTabImage.Fields[1]),bmWrite);
//picstream:=tadoblobstream.Create(tblobfield(DMRoadWay.ADOQueryImage.FieldByName('pic')),bmWrite);
picstream.LoadFromFile(gInfo.info.carPicSource + '\show.jpg');
picstream.Position:=0;
tblobfield(DMRoadWay.ADOTabImage.Fields[1]).loadfromstream(picstream);
DMRoadWay.ADOQueryImage.Post; }
在这么多排列出来的方法中,如果用FieldByName,则:field 'pic' not found
如果用Fields[1],则:list out of bounds(1).
但DMRoadWay.ADOTabImage.FieldByName('IMAGENO').AsString := strGuid;这句都能正确执行,说明表是连上的。为什么就表中的pic字段找不到呢?
我用的是db2数据库,生成表的sql如下:
CONNECT TO LWCENTER;
CREATE TABLE DB2ADMIN.TEST ( IMAGENO VARCHAR (60) , PIC BLOB (30 K ) NOT LOGGED NOT COMPACT ) ;
CONNECT RESET;
其中就两个字段了。
我搞了进一天了,还是搞不定。望高手们指教!