Q&A

  • 데이터베이스 입력시 문제점.
   mssql를 쓰고 있고,

   blob를 이용하여 이미지를 저장하고자 합니다.

   그런데  해당 테이블의 소유주가 dbo이고 권한이

   system administrator이면 invaild blob length 의 invalid blob length
   라는 에러가 나고,

   테이블의 소유를 일반 계정에 database creator이면 저장이 됩니다.

   어떤 이유인지 모르겠네요. mssql 문제인지 소스의 문제인지

   감을 못잡겠습니다.

   좋은 답변 부탁합니다.


  =======생략============================
    Query3.Sql.Clear;
    Query3.Sql.Add('select * from IMAGE_TABLE');
    Query3.Sql.Add('Where goods = '''+edtGoods.Text+'''');
    Query3.Sql.Add('and   spec  = '''+edtSpec.Text+'''');
    Query3.RequestLive := True;
    Query3.Active      := True;
    if(Query3.IsEmpty) then Image_write
    else                    Image_update;

//================생략====================


procedure TfrmA010200I.Image_write;
var BlobField : TBlobField;
    BS        : TBlobStream;
    MyFormat  : Word;
    AData     : THandle;
    APalette  : HPALETTE;
    gg        : Boolean;
begin
    Image_view.Picture.SaveToClipboardFormat(MyFormat,AData,APalette);
    Image_view.Picture.Bitmap.LoadFromClipboardFormat(MyFormat,AData,APalette);
    Query3.Insert;
    Query3.FieldByName('goods').value := edtGOODS.text;
    Query3.FieldByName('spec').value  := edtSpec.text;
    BlobField := TBlobField(Query3.FieldByName('TIMAGE'));
    BS        := TBlobStream(Query3.CreateBlobStream(BlobField, bmWrite));
    Image_view.Picture.Bitmap.SaveToStream(BS);

    Query3.Post;
end;
0  COMMENTS