CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

如何在程序里面调用oracle的备份功能

楼主wuhong110(苦作乐)2003-04-01 19:44:22 在 Oracle / 开发 提问

我希望在程序里面调用oracle的备份成dmp的功能  
  我用的delphi开发的程序  
  如何实现  
  急 问题点数:100、回复次数:3Top

1 楼jiezhi(风满袖)回复于 2003-04-01 20:02:55 得分 80

unit   Unit_XZDCMS;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs,  
      Buttons,   StdCtrls,   ExtCtrls,   Db,   DBClient,   ShellApi;  
   
  type  
      TForm_XZDCMS   =   class(TForm)  
          RadioGroup1:   TRadioGroup;  
          cbUser:   TComboBox;  
          Label1:   TLabel;  
          Label2:   TLabel;  
          Edit1:   TEdit;  
          SpeedButton1:   TSpeedButton;  
          cdsTemp:   TClientDataSet;  
          SaveDialog1:   TSaveDialog;  
          sbOK:   TSpeedButton;  
          sbCancel:   TSpeedButton;  
          procedure   FormShow(Sender:   TObject);  
          procedure   SpeedButton1Click(Sender:   TObject);  
          procedure   sbOKClick(Sender:   TObject);  
          procedure   sbCancelClick(Sender:   TObject);  
          procedure   RadioGroup1Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
          LogFileName:   string;  
      end;  
   
  var  
      Form_XZDCMS:   TForm_XZDCMS;  
   
  implementation  
  uses   SystemDM,   unit_pub,   Unit_XZDCB;  
  {$R   *.DFM}  
   
  procedure   TForm_XZDCMS.FormShow(Sender:   TObject);  
  var  
      strCurDir:   string;  
      strFileName:   string;  
  begin  
      with   cdsTemp   do  
      begin  
          Close;  
          CommandText   :=   'SELECT   DISTINCT   OWNER   FROM   ALL_TABLES';  
          Open;  
          while   not   Eof   do  
          begin  
              cbUser.Items.Add(Fields[0].AsString);  
              Next;  
          end;  
          Close;  
          CommandText   :=   '   SELECT     USERNAME   FROM     USER_USERS';  
          Open;  
          cbUser.ItemIndex   :=   cbUser.Items.IndexOf(Fields[0].AsString);  
      end;  
      strCurDir   :=   ExtractFilePath(Paramstr(0));  
      strFileName   :=   strCurDir   +   'EXP'   +   DateTimeToStr(Date);  
      SaveDialog1.FileName   :=   strFileName;  
      edit1.Text   :=   strFileName;  
   
  end;  
   
  procedure   TForm_XZDCMS.SpeedButton1Click(Sender:   TObject);  
  begin  
      with   SaveDialog1   do  
          if   Execute   then  
          begin  
              edit1.Text   :=   FileName;  
          end;  
  end;  
   
   
   
  procedure   TForm_XZDCMS.sbOKClick(Sender:   TObject);  
  var  
      strCom:   string;  
      user:   variant;  
      sCommandLine:   string;  
      bCreateProcess:   boolean;  
      lpStartupInfo:   TStartupInfo;  
      lpProcessInformation:   TProcessInformation;  
   
  begin  
    //   LogFileName   :=   GetTmpFileName();  
      LogFileName   :=   ChangeFileExt(edit1.Text,   '.log');  
      user   :=   DmSystem.SocketConnection.AppServer.GetUserAndPass;  
      case   RadioGroup1.ItemIndex   of  
          0:  
              begin  
                  sCommandLine   :=   'EXP   '   +   user[0]   +   '/'   +   user[1]   +   '@LZRL   FULL=Y   CONSISTENT=Y   FILE='   +   Edit1.Text   +   '   LOG='   +   LogFileName;  
              //     ShellExecute(Self.Handle,   nil,   'EXP',   Pchar(strCom),   nil,   sw_shownormal);  
              end;  
          1:  
              begin  
                  sCommandLine   :=   'EXP   '   +   user[0]   +   '/'   +   user[1]   +   '@LZRL   OWNER='   +   cbUser.Text   +   '   CONSISTENT=Y   FILE='   +   Edit1.Text   +   '   LOG='   +   LogFileName;  
              end;  
          2:  
              begin  
                  TForm_XZDCB.Create(self);  
                  try  
                      Form_XZDCB.UserName   :=   cbUser.Text;  
                      Form_XZDCB.ShowModal;  
                      if   Form_XZDCB.ModalResult   =   mrOK   then  
                      begin  
                          sCommandLine   :=   'EXP   '   +   user[0]   +   '/'   +   user[1]   +   '@LZRL   TABLES=('   +   Form_XZDCB.Tables   +   ')   CONSISTENT=Y   FILE='   +   Edit1.Text   +   '   LOG='   +   LogFileName;  
                      end;  
                  finally  
                      Form_XZDCB.Free;  
                  end;  
              end;  
      end;  
   
   
      lpStartupInfo.dwFlags   :=   STARTF_USESHOWWINDOW;  
      lpStartupInfo.wShowWindow   :=   SW_SHOWNORMAL;  
      bCreateProcess   :=   CreateProcess(nil,  
          PChar(sCommandLine),   nil,   nil,   True,  
          HIGH_PRIORITY_CLASS,   nil,  
          nil,   lpStartupInfo,   lpProcessInformation);  
      if   bCreateProcess   then  
          WaitForSingleObject(lpProcessInformation.hProcess,   INFINITE);  
   
      ModalResult   :=   mrOK;  
  end;  
   
  procedure   TForm_XZDCMS.sbCancelClick(Sender:   TObject);  
  begin  
      ModalResult   :=   mrCancel;  
  end;  
   
  procedure   TForm_XZDCMS.RadioGroup1Click(Sender:   TObject);  
  begin  
      if   RadioGroup1.ItemIndex   =   0   then  
      begin  
          Label1.Enabled   :=   False;  
          cbUser.Enabled   :=   False;  
      end  
      else  
      begin  
          Label1.Enabled   :=   True;  
          cbUser.Enabled   :=   True;  
        //DmSystem.SocketConnection.AppServer.  
      end;  
  end;  
   
  end.Top

2 楼jiezhi(风满袖)回复于 2003-04-01 20:05:53 得分 0

界面上就是让用户选择以何种方式导出:  
  全数据库、按用户、按表  
  如果按用户的话,下拉框里选择用户  
  最后点击确定,开始导出……Top

3 楼steel1991(首席潜水员)回复于 2003-04-02 08:48:44 得分 20

winexec(pchar('exp   system/manager@serviceName   file=c:\bak.dmp   tables=tab1,tab2'),sw_show);Top

相关问题

  • 如何用VB.NET调用ORACLE程序......
  • 程序中如何调用EXP命令备份数据库?
  • oracle初学,请问怎么在程序中调用ORACLE函数
  • 程序调用
  • 程序调用!!
  • 调用程序
  • 如何调用ORACLE程序包中的存储过程?
  • .net程序调用oracle数据库函数,在线等~~~~
  • 在oracle中如何调用外部程序?---------急
  • 在oracle中如何调用外部程序?---------急

关键词

  • xzdcms
  • tspeedbutton
  • 程序
  • tobject
  • tform
  • unit
  • procedure
  • sender

得分解答快速导航

  • 帖主:wuhong110
  • jiezhi
  • steel1991

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo