设Query1.RequestLive:=True;可以把Query当成Table来用。在DBImage1的OnDblClick事件中
Try
  DBImage1.Picture.LoadFromFile('c:\1.bmp');
  Query1.Post;
Except
End;

解决方案 »

  1.   

    用Query添加图片,用流传输的方式比较好!
     MyStream:StringStream;
      

  2.   

    我用insert语句:
      with query1 do
       begin
        close;
        sql.Clear;
        sql.Add('insert pictest (ID,PIC) VALUES(:ID,:PIC)');
        parambyname('id').AsInteger:=1;
        TBlobField(parambyname('pic')).LoadFromFile(OpenPictureDialog1.FileName);//这一句是否正确?
        ExecSQL;
       end;执行有错误。
      

  3.   

    procedure TForm1.DBImage1Click(Sender: TObject);
    begin
       if  OpenPictureDialog1.Execute   then
        begin
        ADOTable1.Open;
        ADOTable1.Edit;
        DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
        end;
    end;
    你也可以试试的,不过我用于多个表中的插入,当然了,前边用case语句判断的,
    可是,前两个表没问题,在后来的表就不行了,哪位大侠能明白为什么。你如果知道了也告诉我好吗?
      

  4.   

    var
      Stream:TStream;
      DataSize:Integer;
      ptrData:PByte;
      vtData:OleVariant;
    begin
      Stream := TFileStream.Create('E:\test1.jpg',fmOpenRead);
      DataSize := Stream.Size;
      vtData := varArrayCreate([0,DataSize-1],varByte);
      ptrData := varArrayLock(vtData);
      Stream.Position := 0;
      Stream.Read(ptrData^,DataSize);
      varArrayUnlock(vtData);
    0A  Stream.Free;
      ADOQuery1.Parameters.ParamByName('newID').Value := 2;
      ADOQuery1.Parameters.ParamByName('newPIC').Value := vtData;
      ADOQuery1.ExecSQL;
      ADOQuery1.Parameters.ParamByName('newPIC').Value := Null;
      vtData := Unassigned;
    end;
      

  5.   

    我不用ADO,只用query,你看如何实现?
      

  6.   

    plainsong(轻风) 
    写进去,如何用流读出来呢?
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);var
      Stream1: TBlobStream;
      Stream2: TStream;
    begin
      Stream1 := TBlobStream.Create(Table1Notes, bmRead);
      try
        ClientDataSet1.Edit;
        { here抯 a different way to create a blob stream } 
        Stream2 := ClientDataSet1.CreateBlobStream(ClientDataSet1.FieldByName('Res'), bmReadWrite);
        try
          Stream2.CopyFrom(Stream1, Stream1.Size);
          ClientDataSet1.Post;
        finally
          Stream2.Free;
        end;  finally
        Stream1.Free;
      end;
    end;具体细节查看帮助TBlobfield
      

  8.   

    解决不能插入jpeg图片的问题:
    use jpeg;
    procedure TForm1.DBImage1DblClick(Sender: TObject);
    var filepath,extname:string  ;
        jpeg:Tjpegimage;begin
        query1.RequestLive:=true;
        if openpicturedialog1.Execute then
        begin
             filepath:=openpicturedialog1.FileName;
             if filepath<>'' then
           extname:=extractfileext(filepath);
             if (uppercase(extname)='.JPEG') or (uppercase(extname)='.JPG')  then
             begin
             query1.Edit;
             jpeg:=Tjpegimage.Create;
             jpeg.LoadFromFile(filepath);
             dbimage1.Picture.Graphic.Assign(jpeg);
             end
             else
             begin
             query1.edit;
             query1graphic.LoadFromFile(filepath);
             end;
             query1.Post;
             end;
    end;