谁有用aduquery访问过sql的image字段的代码吗?包括读取,显示图片到image;从image加载图片,存入数据库

解决方案 »

  1.   

    var
      MemStrm:TMemoryStream;  //读取
      MemStrm:=TMemoryStream.Create;
      TBlob(ADOQuery.FieldByName('[图片]')).SaveToStream(MemStrm);
      Image.LoadFromStream(MemStrm);  //存储
      Image.SaveToStream(MemStrm);
      ADOQuery.Edit;
      ADOQuery.FieldByName('[图片]').SetFieldType(ftBlob);
      TBlob(ADOQuery.FieldByName('[图片]')).LoadFromStream(MemStrm);
      ADOQuery.Post;
      

  2.   


    procedure TfrmTechnicalProcess.LoadPicture();
    var
      MemStrm:TMemoryStream;
    begin
      MemStrm:=TMemoryStream.Create;
      ADOQuery1.Connection:=udm.DataModule1.ADOConnection1;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select Picture From TechnicalProcess '+
        'Where UserId = '+udm.DataModule1.UserId);
      ADOQuery1.Open;
      if ADOQuery1.FieldByName('picture').IsNull then Exit;
      TBlob(ADOQuery.FieldByName('picture')).SaveToStream(MemStrm);
       Image1.LoadFromStream(MemStrm);
     // Image1.Picture.Assign(ADOQuery1.FieldByName('picture'));
    end;我读取image,这样写,都无法编译通过呀,请问楼上的,哪儿错了呀
      

  3.   

    [Error] UTechnicalProcess.pas(230): Undeclared identifier: 'TBlob'这是错误提示
      

  4.   

    TBlobField
    抱歉,书写问题。
      

  5.   

    感谢 unsigned 的回复,编译是可以通过,但就是显示不出图片来,郁闷了procedure TfrmTechnicalProcess.LoadPicture();
    var
      MemStrm:TMemoryStream;
    begin
      MemStrm:=TMemoryStream.Create;
      ADOQuery1.Connection:=udm.DataModule1.ADOConnection1;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select Picture From TechnicalProcess '+
        'Where UserId = '+udm.DataModule1.UserId);
      ADOQuery1.Open;
      if ADOQuery1.FieldByName('picture').IsNull then Exit;
      TBlobField(ADOQuery1.FieldByName('picture')).SaveToStream(MemStrm);
     //  Image1.LoadFromStream(MemStrm);
      Image1.Picture.Bitmap.LoadFromStream(MemStrm);
     // Image1.Picture.Assign(ADOQuery1.FieldByName('picture'));
    end;
      

  6.   

    jpeg 格式呀另外,我的存入代码是这样子的
    var
      MemStrm:TMemoryStream;
    begin
      MemStrm:=TMemoryStream.Create;
      Image1.Picture.Bitmap.SaveToStream(MemStrm);
      ADOQuery1.Connection:=udm.DataModule1.ADOConnection1;
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select Picture From TechnicalProcess '+
        'Where UserId = '+udm.DataModule1.UserId);
      ADOQuery1.Open;
        
      ADOQuery1.Edit;
      ADOQuery1.FieldByName('Picture').SetFieldType(ftBlob);
      TBlobField(ADOQuery1.FieldByName('Picture')).LoadFromStream(MemStrm);
      ADOQuery1.Post;
    end;
      

  7.   

    读取图片
    var 
      mStream:TMemoryStream; 
      JpgFile:TjpegImage; 
    begin 
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('Select Picture From TechnicalProcess '+
        'Where UserId = '+udm.DataModule1.UserId);
      ADOQuery1.Open;  if not ADOQuery1.FieldByName('Picture').IsNull then begin ; 
        mStream:=TMemoryStream.Create ; 
        JpgFile:=TjpegImage.Create ; 
        TBlobField(ADOQuery1.FieldByName('Picture')).SaveToStream(mStream);  
        mStream.Position :=0; 
        jpgfile.LoadFromStream(MStream); 
        image2.Picture.Assign(JpgFile); 
     end 
     else begin 
       image2.Picture :=nil; 
     end; 
      

  8.   

    if   not   ADOQuery1.FieldByName('Picture').IsNull   then   begin 后面多了个分号
      

  9.   

    //------------读取-----------procedure TForm1.Button1click(Sender:TObject)
    var
      str:string;
      srm:TMemoryStream 
    begin
      str:='select field1 from t ';
      srm:=TMemoryStream.create;
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add(str);
          open;
          TBlobfield(fieldbyname('filed1')).savetostream(srm);
          srm.position:=0;
          srm.free;
        end;
    end;//-------------保存-------------
    olecontainer1.createobjectfromfile(opendialog1.filename,true);
    olecontainer1.doverb(0);
    srm:=TStringstream.create('');
    with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('insert into t(field) values(:stream)');
        parameters.parambyname('stream').loadfromstream(srm,ftblob);
        execsql; 
      end;
      

  10.   

    //------------读取-----------procedure TForm1.Button1click(Sender:TObject)
    var
      str:string;
      srm:TMemoryStream 
    begin
      str:='select field1 from t ';
      srm:=TMemoryStream.create;
      with adoquery1 do
        begin
          close;
          sql.clear;
          sql.add(str);
          open;
          TBlobfield(fieldbyname('filed1')).savetostream(srm);
          Image1.loadfromstream(srm);  //这里刚才忘记了
          srm.position:=0;
          srm.free;
        end;
    end;//-------------保存-------------
    olecontainer1.createobjectfromfile(opendialog1.filename,true);
    olecontainer1.doverb(0);
    srm:=TStringstream.create('');
    with adoquery1 do
      begin
        close;
        sql.clear;
        sql.add('insert into t(field) values(:stream)');
        parameters.parambyname('stream').loadfromstream(srm,ftblob);
        execsql; 
      end;
      

  11.   

    我编译到这一句时报错Image1.loadfromstream(srm);  //这里刚才忘记了[Error] UTechnicalProcess.pas(130): Undeclared identifier: 'loadfromstream'提示没有这个属性呀
      

  12.   


      Image1.Picture.Graphic:=TJPEGImage.create;
      Image1.Picture.Graphic.LoadFromStream(srm);