procedure TForm1.btn1Click(Sender: TObject);
var MS:TFileStream;
    ID: string;
begin
  ID := edt1.Text;
  if dlgOpen1.Execute then
  begin
    MS:=TFileStream.Create(dlgOpen1.FileName, fmOpenRead);
    MS.Position:=0;
 
    tblTable1.Edit;
    //在数据库中添加一条记录
    TBlobField(tblTable1.FieldbyName('aaa‘)).LoadFromStream(MS);
    tblTable1.Post;
    MS.Free;
  end;
end; 我以blob的形式把我打开的文件存入到mysql数据库中,aaa是blob型的。但是报错,说invalid class
typecast,请问是什么原因呢?

解决方案 »

  1.   

    tblTable1.close;
    tblTable1.append;
      

  2.   

    存储图片的代码:
     //存储图片
       MyJPEG := TJPEGImage.Create;
       try
        with MyJPEG do
        begin
          Assign(Image1.Picture.Graphic);
          MS:=TMemoryStream.create;
          SaveToStream(MS);
          MS.Position:=0;
          TBlobField(FieldbyName('图片')).LoadFromStream(MS);
        end;
       finally
        MyJPEG.Free;
       end;
       try
       Post;
       except
       showmessage('数据无法提交');读取图片的代码:
     if ef_adoquery.RecordCount<>0 then
            begin
            try
              tempstream:=TmemoryStream.Create();
              //将图像字段保存到流中
              TBlobField(mainform.ef_ADOQuery.FieldByName('图片')).SaveToStream(tempstream);
              ////给留定位
              tempstream.Position:=0;  
              //省城临时image
              tempjpeg:=TJPEGImage.Create;
              //存留信息
              tempjpeg.LoadFromStream(tempstream);
              //显示图像
              Image1.Picture.Bitmap.Assign(tempjpeg);
            finally
              tempstream.Free;
              tempjpeg.Free;
            end;
            end;
      

  3.   

    mysql存blob效率比较低,尤其在你的文件较大的时候,建议只存放路径,然后到服务器对应查找,这样效果会好些
      

  4.   

    但是我必须把它存到数据库中啊,xixuemao的代码基本上跟我那个一样啊。为什么我的会报这个错呢?