错误是:stack overflow 
 var
  strm:tmemorystream;
  ext:string;
begin
    dm.materialcds.append;
strm:=tmemorystream.Create;
    if image1.picture.Graphic <> nil then
    begin
       ext:=extractfileext(openpicturedialog1.FileName ); //取出文件的扩展名
       image1.Picture.Graphic.SaveToStream(strm);
       strm.Position :=0;
       tblobfield(dm.MaterialCDS.FieldByName('图片')).LoadFromStream(strm);
        if uppercase(ext) = '.BMP' then
        dm.MaterialCDS.FieldByName('isbmp').Value := 1
        else if (uppercase(ext) = '.JPG') OR ( uppercase(ext) = '.JPEG') Then
            dm.MaterialCDS.FieldByName('isbmp').Value := 0;
      end;
      dm.MaterialCDS.ApplyUpdates(0);
      strm.Free;
end;
读图片
  var
  strm:tadoblobstream;
  jpegimage:tjpegimage;
  bitmap:tbitmap;
strm := tadoblobstream.Create(tblobfield(dm.severADOQ1.FieldByName('图片')),bmread);
   try //try1
    //strm.position :=0;
    xzcailiaoform.image1.Picture.Graphic := nil;
    if dm.MaterialCDS.FieldByName('isbmp').AsString ='1' then //BMP型图像数据
    begin //begin11
      bitmap := tbitmap.Create ;
      try //try11
        bitmap.LoadFromStream(strm);
        xzcailiaoform.image1.Picture.Graphic := bitmap;
      finally
        bitmap.Free;
      end; //end try11
      end
      else if dm.severADOQ1.FieldByName('isbmp').asstring ='0' then //JPEG型图像数据
      begin //begin12
        jpegimage := tjpegimage.Create ;
      try //try12
        jpegimage.LoadFromStream(strm);
        xzcailiaoform.image1.Picture.Graphic := jpegimage;
      finally
        jpegimage.Free ;
      end; //end try12
      end; //end begin12
      finally
      strm.Free ;
    end; //end try1
错误是:stack overflow

解决方案 »

  1.   

    stream:=TMemoryStream.Create;
    image1.Picture.Graphic.SaveToStream(stream);
    adoquery1.Insert;
    TBlobField(adoQuery1.FieldByName('insertpic')).loadfromstream(stream);
    adoQuery1.post;
      

  2.   

    这是上传:
      query:=TADOQuery.Create(nil);
      query.Connection:=frmmain.ADOConnection1;
      query.Close();
      query.SQL.Add('SELECT  * FROM jb700 where PERSONID='+quotedstr(trim(staffid)));
      query.Open();
        query.Edit();
        stream:=TmemoryStream.Create();
        stream.LoadFromFile(FileDIR+'tmp\'+staffid+'.jpeg');
        TBlobField(query.FieldByName('photo')).LoadFromStream(stream);
        query.Post();
        query.Close();
        FreeAndNil(stream);
        FreeAndNil(query);
        msgbox('图片保存成功!!!');这是下载:
    if trim(vartostr(query.FieldByName('photo'AsVariant))<>'' then
     begin
       TBlobField(query.FieldByName('photo')).SaveToFile(filename);
    end;