怎样把文件dos.doc保存到sql server数据库中,然后再从数据库中读取文件,保存到硬盘的其他目录中?(在线)

解决方案 »

  1.   

    // 个通过 , 'doc' 的数据库中为image 类型
    // 不管是WORD,EXCLE,还中JPG的都能用
    // 注意打开文件时一定要先定位(即要先写sql 查询确定有个再打开 ),要不然会出错,还有就是临时文件的删除。。
    // delphi 7+sql2000通过。。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, StdCtrls, shellapi,Buttons, OleCtnrs;
    type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        Button1: TButton;
        Button2: TButton;
        OpenDialog1: TOpenDialog;
        ADOQuery1: TADOQuery;
        OleContainer1: TOleContainer;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
       s:string;
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
     if OpenDialog1.Execute then
      begin
        if not ADOQuery1.Active then ADOQuery1.Open;
        ADOQuery1.Append;
        s :=ExtractFileName(OpenDialog1.FileName);
        (ADOQuery1.FieldByName('doc') as TBlobField).LoadFromFile(OpenDialog1.filename);
         ADOQuery1.Post;end;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    (ADOQuery1.FieldByName('doc') as TBlobField).savetoFile(ExtractFileDir(Application.ExeName)+'\'+s);// (ADOQuery1.FieldByName('doc') as TBlobField).savetoFile('你要的路径' +s)  ;
     
      
      shellexecute(handle,nil,pchar(s),nil,nil,sw_shownormal);
       end;end.
      

  2.   

    ocWord: TOleContainer;
    aqWord: TADOQuery;
    //用Image字段存储数据
    ...
    存入:
    procedure TfrmWord.SaveWordToDB;
    var
      msWord: TMemoryStream;
    begin
      msWord := TMemoryStream.Create();
      ocWord.SaveToStream(msWord);
      msWord.Position := 0;
      TBlobField(aqWord.FieldByName('fmsg')).LoadFromStream(msWord);
      msWord.Free;
      aqWord.Post;
      aqWord.UpdateBatch();
    end;
    ...
    取出:
    procedure TfrmWord.GetWordFromDB;
    var
      msWord:TMemoryStream;
    begin
      msWord := TMemoryStream.Create();
      TBlobField(aqWord.FieldByName('fmsg')).SaveToStream(msWord);
      msWord.position := 0;
      ocWord.LoadfromStream(msWord);
      msWord.Free;
      ocWord.SaveAsDocument('d:\test.doc');
    end;
      

  3.   

    用Image类型存储数据 存入 
    if (OpenDialog1.Execute) then
      begin
        with Query do
        begin
          //Edit;
         TBlobField(FieldByName('files')).LoadFromFile(opendialog1.FileName);
        // Post;
        end;
      end;  
    取出:
    if (SaveDialog1.Execute) then
      begin
        with Query do
        begin
         TBlobField(FieldByName('files')).SaveToFile(SaveDialog1.FileName);
        end;
      end;