关于操作数据库图象字段的提问,急急急!我愿意给我的200分(200分)

  • 主题发起人 主题发起人 yesye
  • 开始时间 开始时间
Y

yesye

Unregistered / Unconfirmed
GUEST, unregistred user!
dmForm.taImport.Filtered:=true;
dmForm.taImport.Filter:='dabh=''+IntToStr(0)+'''; //目的就是以免把数据库中记录给查询出来,过滤全部的数据(数据库中没有dabh='0'的数据)
dmForm.taImport.Active:=true; //taImport为我的一个表控件
dmForm.taImport.Insert; //准备插入图片
dmForm.taImportDABH.AsString:=strDABH; //taImportDABH为生成的字段(相对于表中taImport的dabh)
dmForm.taImportZP.LoadFromFile(txtPath.Text+strDir+'/'+strFileName+'.jpg'); //真正的图象字段(也是生成的)
dmForm.taImport.Post; //提交插入图片工作
dmForm.taImport.Active:=false;
其中dmForm.taImportZP的Size属性我设置为1024
问题也就出来了,我的一些.jpg文件能够进去,而一些却不能进去,而且
图片大小都相差不大的,挺多2k相差,出现的问题:
invalid blob length
不知道这是什么原因?
还有前些天我也来问过使用TQuery来实现插入的,但插入的过程中老发生错误!
有哪位能否写个详细的例子给我?
关键的属性怎么设置?
quImport.Close; //quImport为TQuery控件
quImport.Params.CreateParameter(ftString,'dabh',ptInput);
quImport.Params.CreateParameter(ftBlob,'ZP',ptInput);
quImport.SQL.Add('insert into a004_zp(dabh,zp) values(:dabh,:zp)');
quImport.Params.ParamByName('dabh')='123456';
quImport.Params.ParamByName('ZP').LoadFromFile(OpenDialog1.FileName);
quImport.ExeSQL;
马上出错,不知道到底是什么原因?

 
我看了你的,太麻烦了吧?你照如下试试?我都是这样用的,很方便呀.而且,你用ADO没有大小
的限制,若用BDE,还要受BLOB SIZE的限制.
:DBImage.Picture.bitmap.assign(JpgPic);//加在下面代码中,DBIMAGE就可显示JPG图片了.
var tempStream:TMemoryStream;
JpgPic:TJpegImage;
begin
try
JpgPic:=TJpegImage.Create;
tempStream:=TMemoryStream.Create;
tempStream.clear;
adoquery1.Append;
JpgPic.LoadFromFile(openpicturedialog1.filename);
DBImage.Picture.bitmap.assign(JpgPic);//若你想DBIMAGE显示JPG图像就可这样.
JpgPic.SaveToStream(tempStream);
tblobfield(adoquery1.FieldByName('image')).LoadFromStream(tempStream) ;
adoquery1.Post;
finally
JpgPic.Free;
tempStream.Free;
end;
这是保存的方法,读取图片也要转换一下才行.
 
我是用的sql server数据库 字段是image类型的
procedure Tfrm_sfxm.popmnuitm_imageClick(Sender: TObject);
var
jpg:tjpegimage;
extname,fname:string;
begin
tblxmxgwj.Insert;
if OpenPictureDialog1.Execute then
begin
ext:=extractfileext(fname);
fname:=OpenPictureDialog1.FileName;
extname:=uppercase(extractfileext(fname));
if extname='.BMP' then DBImage1.Picture.LoadFromFile(fname);
if (extname='.JPG') or (extname='.JPEG') then
begin
jpg:=Tjpegimage.Create;
try
jpg.LoadFromfile(fname);
DBImage1.Picture.Graphic.Assign(jpg);
finally
jpg.Free;
end;
end;
end;
end;
 
我发了个E-Mail给你
你仔细看看
 
接受答案了.
 
后退
顶部