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;