TORacleDataset load jpeg file into Oracle BLOB

jwangb

Member
Can someone give me some code sample of using TOracleDataSet to load jpeg file into Oracle BLOB field? JPEG file name obtained from OpenPictureDialog.filename property

I've read an article of using this method to load jpeg file into oracle blog field but could not find now.

Thx
James
 
Can sql statement be "Update table set....." instead of "insert into table ...." while loading jpeg image to BLOB field? Actually I'm working on an application that requires Update method not Insert into.
 
Hi Marco,

I tried below code but every time when application exits it will raize an error like this "Invalid pointer operation". Can help to figure out?

Thx
James

============================================
procedure TfmUpLoadPic.Button2Click(Sender: TObject);
var
BLOB:TLobLocator;
memStrm:TMemoryStream;
JPEGImage:TJpegImage;
begin
JPEGImage:=TJpegImage.Create;
memStrm:=TMemoryStream.Create;
memStrm.LoadFromFile(Edit1.Text);
with DM.OraQuery6 do
begin
Close;
SQL.Clear;
SQL.Add('update mis_dmg_line set item_pic1 = :blob_pic1');
SQL.Add(' where claim_header_id = '''+fmDMGRequest.Edit4.Text+'''');
DeclareVariable('blob_pic1', otBlob);
BLOB:=TLobLocator.CreateTemporary(DM.OraConn, otBlob, True);
JPEGImage.Assign(Image1.Picture.Graphic);
JPEGImage.SaveToStream(BLOB);
SetComplexVariable('blob_pic1', BLOB);
ExecSQL;
BLOB.Free;
end;
memStrm.Free;
JPEGImage.Free;
DM.Qry_PicLoad.Refresh;
Edit1.Clear;
Image1.Picture.Free;
end;
 
Does the "Invalid pointer operation" only occur if this code is executed? Or does it also occur if you don't press Button2.
 
Hi Marco,

Only occurs if the code is executed and call Application.Terminate method to quit application.

Thx
James
 
Hi Marco,

I changed my code like below and it works..... Don't know why.... Can help a little bit?

Thx
James

==================================================
procedure TfmUpLoadPic.Button2Click(Sender: TObject);
var
BLOB:TLobLocator;
//memStrm:TMemoryStream;
JPEGImage:TJpegImage;

begin
JPEGImage:=TJpegImage.Create;
//memStrm:=TMemoryStream.Create;
//memStrm.LoadFromFile(Edit1.Text);
with DM.OraQuery6 do
begin
Close;
SQL.Clear;
SQL.Add('update mis_dmg_line set item_pic1 = :blob_pic1');
SQL.Add(' where claim_header_id = '+fmDMGRequest.Edit4.Text);
SQL.Add(' and claim_line_id = '+fmDMGRequest.vDMG_Line_ID);
DeclareVariable('blob_pic1', otBlob);
BLOB:=TLobLocator.CreateTemporary(DM.OraConn, otBlob, True);
JPEGImage.Assign(Image1.Picture.Graphic);
JPEGImage.SaveToStream(BLOB);
SetComplexVariable('blob_pic1', BLOB);
ExecSQL;

end;
JPEGImage.Free;
BLOB.Free;
//memStrm.Free;

DM.Qry_PicLoad.Refresh;
Edit1.Clear;
Button2.Enabled:=False;
//Image1.Picture.Free;
end;
 
Back
Top