如果你装了Oracle客户端的话就直接用ADO控件的Oracle Provider for OLE DB就可以连接数据库了。不要用Microsoft OLE DB Provider for Oracle不然就会报不技术Blob格式的数据。 var mem:Tstream; jpeg:TJpegimage; begin jpeg:=TJpegimage.Create; mem:=adoquery1.CreateBlobStream(adoquery1.FieldByName('pic'),bmRead); mem.Position:=0; if mem.Size>0 then begin begin jpeg.LoadFromStream(mem); image.Picture.Assign(jpeg); end; end;如果没有安装客户端的话就要用第三方控件ODAC连接。读取方法和上面一样。
var pjpg:tjpegimage; pic:TMemoryStream; begin pjpg:=tjpegimage.Create; pic:=TMemoryStream.Create; TBlobField(dataset.FieldByName('Img')).savetoStream(pic); pic.positon:=0; pjpeg.LoadFromStream(pic); image.graphi.bmp.assign(pjpeg); end;
我试过用adoquery,可是里面的sql应该怎么写啊? blob字段不能直接select啊
这个dataset怎么设置?没用过这个组件...见笑了...
现在碰上个新的问题,显示图片时弹错 ‘Non-blob column in table required to perform operation’ 给我讲下怎么解决好吗?
var mem:Tstream;
jpeg:TJpegimage;
begin
jpeg:=TJpegimage.Create;
mem:=adoquery1.CreateBlobStream(adoquery1.FieldByName('pic'),bmRead);
mem.Position:=0;
if mem.Size>0 then begin
begin
jpeg.LoadFromStream(mem);
image.Picture.Assign(jpeg);
end;
end;如果没有安装客户端的话就要用第三方控件ODAC连接。读取方法和上面一样。
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pic:=TMemoryStream.Create;
TBlobField(dataset.FieldByName('Img')).savetoStream(pic);
pic.positon:=0;
pjpeg.LoadFromStream(pic);
image.graphi.bmp.assign(pjpeg);
end;
我试过用adoquery,可是里面的sql应该怎么写啊?
blob字段不能直接select啊
现在碰上个新的问题,显示图片时弹错
‘Non-blob column in table required to perform operation’
给我讲下怎么解决好吗?