zoukankan      html  css  js  c++  java
  • DELPHI编程用SQLDMO呈现带进度条的SQL Server数据库Databnse备份!

    假如写成线程方法效果更好,共享!
    先导入SQLDMO生成SQLDMO_TLB.pas文档

    unit Unit3;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs,SQLDMO_TLB, StdCtrls, ComCtrls,comobj;

    type
    TForm3 = class(TForm)
    Button1: TButton;
    ProgressBar1: TProgressBar;
    procedure Button1Click(Sender: TObject);

    private
    { Private declarations }
    public

    { Public declarations }
    end;

    type
    TBackupSink=class(TInterfacedobject,backupsink)//呈现接口
    function PercentComplete(const Message: WideString; Percent: Integer): HResult; stdcall;
    function NextMedia(const Message: WideString): HResult; stdcall;
    function Complete(const Message: WideString): HResult; stdcall;
    end;

    var
    Form3: TForm3;
    implementation

    {$R *.dfm}

    function TBackupSink.PercentComplete(const Message: WideString; Percent: Integer):HResult;
    begin
    Form3.ProgressBar1.Position:=percent;
    result:=0;
    end;

    function TBackupSink.NextMedia(const Message: WideString):HResult;
    begin
    result:=-1;
    end;

    function TBackupSink.Complete(const Message: WideString):HResult;
    begin
    result:=1;
    end;


    procedure TForm3.Button1Click(Sender: TObject);
    var
    Mysql数据库Server:SQLServer;
    MyBackUp:BackUp2;
    MyBackSink:TBackupSink;
    FInterfaceConnection:integer;
    BS:TBackupSink;
    begin
    BS:=TBackupSink.Create;
    Mysql数据库Server:=coSQLServer.Create;
    MyBackUp:=coBackUp2.Create;
    Mysql数据库Server.Connect('192.169.1.10','sa','password');;
    MyBackUp.Database:='DBA';
    MyBackUp.Initialize:=true;
    MyBackUp.PercentCompleteNotification:=1;
    MyBackUp.Action:=0;//0完整备份,1差异备份,2文档组备份,3日志备份
    MyBackUp.Files:='d:\dba.bak';
    InterfaceConnect(MyBackUp, IID_BackupSink, BS, FInterfaceConnection);//关键是那里
    MyBackUp.SQLBackup (Mysql数据库Server);
    InterfaceDisconnect(MyBackUp, IID_BackupSink,FInterfaceConnection);//
    end;

    end.

    +++++++++++++++++++++++++++++++++++
    backupsink就在SQLDMO_TLB.pas里,定义了接口!
    抄唯一

    打开DELPHI编程,Project菜单->Import Type Library...,在列表框中找到"Microsoft SQLDMO Object
    Library(Version 8.0)"(你的版本估计和我的不相同),能够看到Class names列表框中呈现出相应的类,
    由于很多类名与vcl本身的类名冲突(比如TApplication,TTable等),需求改正类的名字,不过不改也没联系,
    那里假设没改,点击按钮"Create Unit",进入漫长的等待过程。由于生成的文档较量大(6万多行的代码Code,
    2.46M),那个过程很简易被误以为死机,稍候片刻。
    第二步,改正Type Library文档。
    经过漫长的等待,终于得到了来之不易的SQLDMO_TLB.pas,然而,当咱们Compile的时候却发明那个单元
    无法编译,提示大意为ID重复定义,那个简单,把第二个ID改成xID,编译经过。
  • 相关阅读:
    执行序列oracle存储过程和序列化写的demo
    快捷键列表myeclipse 设置代码提示快捷键
    鼠标管理解决win8 插上usb/鼠标蓝屏或无效方法
    JQuery实现拼图数字游戏
    Django的admin定制
    Django报:AttributeError: tuple object has no attribute get
    Django的models方法返回值异常,待解决
    主页跳转子页面的时候,模板语句中的数据未返回到页面(子页面空白)
    Django报:builtin_function_or_method' object is not iterable
    Windows Azure SDK 1.5、Windows Azure Tools for Microsoft Visual Studio 2010和新的服务管理功能发布了
  • 原文地址:https://www.cnblogs.com/leonkin/p/2363670.html
Copyright © 2011-2022 走看看