各位朋友,小弟有一个表,结构如下:
姓名(类型:varchar(10)) 
图像(类型:image)假如存储过程如下:
create procedure InsertRecord
                 @name varchar(10),
                 @image image
as
insert 表(姓名,图像) values(@name, @image)现DELPHI窗体上有一个IMAGE的控件,里面有一幅图像,有一个EDIT,是保存姓名的,假如用ADOQUERY,怎样写插入语句,调用该存储过程,才能将当前记录插入到数据库里呢?
另外,假如在查找记录的时候,在查找到该记录后,怎样写赋值语句,才能将数据库里面的图像字段赋值给IMAGE,使IMAGE可以显示数据库里面的图像呢?请论坛上的各位朋友赐教,谢谢!!!

解决方案 »

  1.   


    var Mem : TMemoryStream;
        FileName :string;
    begin
      if OpenPictureDialog1.Execute then
      begin
        Mem := TMemoryStream.Create;
        Mem.LoadFromFile(FileName);
        Mem.Position:=0;
        adoquery1.Close;
        adoquery1.SQL.Clear;
        adoquery1.SQL.Add(' insert into 人员 (人员编号,照片) VALUES (:nameid,:FILENAMES)');
    //    adoquery1.Parameters.Add;
        adoquery1.Parameters[0].Value :='111012';
    //    adoquery1.Parameters.Add;
        adoquery1.Parameters[1].LoadFromStream(Mem,ftblob);
        try
          adoquery1.ExecSQL;
        finally
          Mem.Free;
        end;
      

  2.   

    TBlobField(FieldByName('image')).SaveToStream( mem );
      

  3.   

    可以直接使用Parameter.Assign(Picture.Graphic)对参数赋值,图片格式建议使用<*.BMP>;
    提出图片可以直接使用Picture.Assign(FieldByName(FieldName));