专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Delphi教程 » sqldmo:关于SQLDMO的使用 »正文

sqldmo:关于SQLDMO的使用

来源: 发布时间:星期四, 2009年2月12日 浏览:66次 评论:0



 有关SQLDMO使用
2005-4-5 16:13:52
lw549

    sqldmo.dll是个com,安装SQLServer后位于Program Files\\Microsoft SQL Server\\80\\Tools\\Binn
文件夹下,有关sqldmo能做什么问题,不是本文讨论重点,这里只介绍说明如何使用该com,现在开始
    第步,导入sqldmo,生成类型介绍说明文件
    打开Delphi,Project菜单->Import Type Library...,在列表框中找到\"Microsoft SQLDMO Object
Library(Version 8.0)\"(你版本可能和我样),可以看到Class names列表框中显示出相应类,
由于很多类名和vcl本身类名冲突(比如TApplication,TTable等),需要修改类名称,不过不改也没关系,
这里假设没改,点击按钮\"Create Unit\",进入漫长等待过程由于生成文件比较大(6万多行代码,
2.46M),这个过程很容易被误认为死机,稍候片刻
    第 2步,修改Type Library文件
    经过漫长等待,终于得到了来的不易SQLDMO_TLB.pas,然而,当我们Compile时候却发现这个单元
无法编译,提示大意为ID重复定义,这个简单,把第 2个ID改成xID,编译通过
    第 3步,使用
    在使用过程中,我发现在很多情况下,SQLDMO_TLB.pas中类是不能用,出现av比如Restore,
必须这样使用:
  CreateOleObject(\'SQLDMO.Restore\');
SQLDMO提供些事件,在.net和vb环境下得到了非常好语法支持,同样问题,在Delphi中却异常麻烦,
我们不得不维护IConnectionPoContainer,难道vb中行代码就能解决问题Delphi中就没有简单
法吗?有!而且同样简单!答案就是EventSinkImp,可以到http://www.techvanguards.com免费下载安装也
很简单,路Yes就ok了
    EventSinkImp实现是基于IConnectionPoContainer,或者说,本来很麻烦事由EventSinkImp
代劳了使用界面和Import Type Library类似,这里就不多说了Import以后,得到SQLDMOEvents.pas
和SQLDMO_TLB.pas两个文件Compile通过,Install出错好事多磨^-^
    根据提示,可以发现TTable、TDataBase和系统中已有类冲突,改成TSQLTable和TSQLDataBase
    EventSinkImp使用很简单,根据帮助,在使用前,Connect下就能顺利挂接事件
    在使用SQLDMOEvents.pas和SQLDMO_TLB.pas单元中,如果出现类冲突,比如TApplication,记得在类
前面加上单元名称,比如Forms.Application就可以了

写下这些希望后来者有所借鉴,如果有其他更好思路方法,欢迎告的,谢!

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: