如何在Access数据库里存取一个文本文件,也就是说先将一个文本文件存入数据库中,然后,在需要时从数据库里读取该文本文件,通过delphi界面显示出来。当然不能以字符类型存取。小弟我是本论坛的新手,敬请各位前辈赐教!

解决方案 »

  1.   

    用文件流读文件..转成内存流..存入BLOB类型的字段..
    这样就可以了...
      

  2.   


     SQL.ADD(INSERT INTO TBL1 (TXTFILE))
     SQL.ADD(VALUES (:TXTFILE))
     PARAMBYNAME('TXTFILE').LoadFromStream(FILENAME);
     EXECSQL;
      

  3.   

    to jpyc: 你能继续回答我的问题吗?
    to yhj78: 非常感谢你的源代码,但我还是不太明白!
    另外,感谢以上各位给我出主意的人,望能继续回答我的问题。
      

  4.   

    写两个函数
    procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);overload;
    procedure databasetofile(adotable:Tadotable;filename,fieldname:string);overload;
    procedure databasetofile(adotable:Tadoquery;filename,fieldname:string);overload;     
    procedure databasetofile(table:Ttable;filename,fieldname:string);overload;
    procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;
    procedure filetodatabase(adotable:Tadotable;filename,fieldname:string);overload;
    procedure filetodatabase(talbe:Ttable;filename,fieldname:string);overload;
      

  5.   

    示例
    procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;
    var
      MemSize: Integer;
      Buffer: PChar;
      MyFile: TFileStream;
      Stream: TBlobStream;
      mfilename:string;
    begin
      myfile:=Tfilestream.Create(filename,fmopenread);
      memsize:=myfile.Size;
      inc(memsize);
      buffer:=allocmem(memsize);
      stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmwrite));
      try
        Stream.Seek(0, soFromBeginning);
        MyFile.Read(Buffer^,MemSize);
        Stream.Write(Buffer^,MemSize);
      finally
        MyFile.Free;
        Stream.Free;
      end;end;
    procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);
    var
      MemSize: Integer;
      Buffer: PChar;
      MyFile: TFileStream;
      Stream: TblobStream;
    begin
      myfile:=Tfilestream.Create(filename,fmcreate);
      stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmread));
      memsize:=stream.Size;
      inc(memsize);
      buffer:=allocmem(memsize);
      try
        Stream.Seek(0, soFromBeginning);
        stream.Read(buffer^,memsize);
        Myfile.Write(buffer^,memsize);
      finally
        MyFile.Free;
        Stream.Free;
      end;end;
      

  6.   

    写入数据库:
    ...
    table1.insert;
    Filetodatabase(table1,filepath+'\temp.txt','textfield');
    table1.post;读取
    ...
    Fieldtodatabase(table1,fieldpath+'temp.txt','textfield');
    memo1.lines.loadfromfile(fieldpath+'temp.txt');
      

  7.   

    to minercxy: 朋友,你的代码很详细,也完全可以执行,临时文本文件也能生成,但在读取时该文件不能在memo中显示,memo中显示的是一个‘#’符号,不知原因何在?你试过吗?我用的Adoquery控件。小弟我先在此谢过了!
      

  8.   

    直接检查文本文件在写入数据库之前,和从数据库读取之后,文件是否正确。先不使用memo.函数肯定不会有问题。我们不光用这个操作文本文件的。