blob를 사용하여 DB에 이미지를 입력/조회/출력을 하고자하는데
DB에 입력시 에러가 발생하여 입력을 못하고 있습니다.
DB는 오라클9i 이고 개발은 델파이3으로 하고 있습니다.
델에서 직접 코딩으로 입력하고자 하였고 OpenDialog를 이용해
파일을 찾아 등록하고자 합니다.
Close;
Clear;
Add('INSERT INTO ');
Add('M0IMAGE (MCODE, ');
Add(' PIX1, ');
Add(' PIXINF1, ');
Add(' PIX2, ');
Add(' PIXINF2, ');
Add(' indt, ');
Add(' indd) ');
Add(' VALUES (:MCODE, ');
Add(' :PIX1, ');
Add(' :PIXINF1, ');
Add(' :PIX2, ');
Add(' :PIXINF2, ');
Add(' :indt, ');
Add(' :indd) ');
Params.ParamByName('MCODE').AsString := Trim(ComboBox2.Text);
Params.ParamByName('pix1').LoadFromFile(OpenDialog1.FileName, ftBlob);
Params.ParamByName('pixinf1').AsString := OpenDialog1.FileName;
Params.ParamByName('pix2').LoadFromFile(OpenDialog2.FileName, ftBlob);
Params.ParamByName('pixinf2').AsString := OpenDialog2.FileName;
Params.ParamByName('INDT').AsString := Trim(edtProjDt.Text);
Params.ParamByName('INDD').AsString := Trim(edtDamdang.Text);
위와 같이 코딩하여 컴파일하면 이상은 없는데 실행시 아래와 같은 에러가 발생합니다.
Project G.exe raised exception class EDBEngine Error with message
'General SQL error. ORA-01008: 일부변수가 결합되지 않았습니다'.
Process stopped. Use Step or Run to continue.
BDE 환경은 아래와 같이 허준님 써놓으신글을 보고 바꾸었네염
DLL32 : SQLORA32.DLL
VENDER INIT : ORA73.DLL
blob SIZE : 20480
blobS TO CACHE : 40960
ROWSET SIZE : 80
어떤식으로 코딩을 해야되는지...아니면 어떤식으로 환경설정을 바꾸어야 될지
조언 바랍니다.
var
mem: TMemoryStream;
bjpg: TJPEGImage;
Image1 : TImage;
Begin
mem := TMemoryStream.Create;
bjpg := TJPEGImage.Create;
Image1 := TImage.Create(Application);
Image1.Picture.LoadFromFile(xOpenPictureDialog.FileName);
bjpg.Assign(Image1.Picture);
bjpg.SaveToStream(mem);
mem.Position := 0;
.
.
.
.
.
ParamByName('pimage').LoadFromStream(mem,ftblob);
이렇게 함 해보세요...
즐프 ~