通过BDE方式,二层。暂不改BDE中默认的Blob Size大小,仍为32
在网上查了些资料,写了下面的程序。保存和导出文本文件没问题
当我想保存一个*.mp3文件时,就报BDE Engine错误,出错代码007

解决方案 »

  1.   

    procedure TForm1.btnImportClick(Sender: TObject);
    var
      sSql: string;
      MemStream: TMemoryStream;
    begin
      if not OpenDialog.Execute then Exit;  sSql := 'Select * from tbCJ where 0=1';
      Query.Close;
      Query.SQL.Clear;
      Query.SQL.Add(sSql);
      Query.Open;  MemStream := TMemoryStream.Create;
      MemStream.LoadFromFile(OpenDialog.FileName);
      MemStream.Position := 0;  Query.Append;
      Query.FieldByName('JH').AsString := '123';
      Query.FieldByName('WJLX').AsString := ExtractFileExt(OpenDialog.FileName);
      TBlobField(Query.FieldByName('SJWJ')).LoadFromStream(MemStream);
      try
        Query.Post;
        ShowMessage('导入成功');
      except
        ShowMessage('导入失败');
      end;
      MemStream.Free;
    end;
      

  2.   

    上面是保存
    下面是导出
    procedure TForm1.btnExportClick(Sender: TObject);
    var
      sSql: string;
      MemStream: TMemoryStream;
      ResultStr: string;
      PResultStr: PChar;
      sFile: string;
    begin
      sSql := 'Select * from tbCJ';
      Query.Close;
      Query.SQL.Clear;
      Query.SQL.Add(sSql);
      Query.Open;  try
        MemStream := TMemoryStream.Create;
        ResultStr := Query.FieldByName('SJWJ').AsString;
        sFile := Query.FieldByName('CJCS').AsString;
        PResultStr := PChar(ResultStr);
        MemStream.Write(PResultStr^, Length(ResultStr));
        MemStream.Seek(0,0);
        MemStream.SaveToFile('Temp'+ sFile);
        ShowMessage('导出成功');
      Except
        ShowMessage('导出失败');
      end;
      MemStream.Free;
    end;
      

  3.   

    我感觉应该是这句错了吧!
    MemStream.Write(PResultStr^, Length(ResultStr));
    应该是把字段的BLOBSTREAM付给memstream。