关于SQLDMO的使用

2016-02-19 19:31 25 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是关于SQLDMO的使用,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

 

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

      sqldmo.dll是一个com,安装SQLServer后位于Program FilesMicrosoft SQL Server80ToolsBinn
  文件夹下,关于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),这个过程很容易被误认为死机,稍候片刻。
      第二步,修改Type Library文件。
      经过漫长的等待,终于得到了来之不易的SQLDMO_TLB.pas,然而,当我们Compile的时候却发现这个单元
  无法编译,提示大意为ID重复定义,这个简单,把第二个ID改成xID,编译通过。
      第三步,使用。
      在使用过程中,我发现在很多情况下,SQLDMO_TLB.pas中的类是不能用的,出现av错误。比如Restore,
  必须这样使用:
    CreateOleObject('SQLDMO.Restore');
  SQLDMO提供的一些事件,在.net和vb环境下得到了非常好的语法支持,同样的问题,在Delphi中却异常麻烦,
  我们不得不维护IConnectionPointContainer,难道vb中一行代码就能解决的问题Delphi中就没有简单的方
  法吗?有!而且同样简单!答案就是EventSinkImp,可以到http://www.techvanguards.com免费下载。安装也
  很简单,一路Yes就ok了。
      EventSinkImp的实现是基于IConnectionPointContainer的,或者说,本来很麻烦的事由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就可以了

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1621237.html

延伸阅读
标签: 电脑入门
1. 不要把PPT当成WORD文档来使用 制作PPT并不是要在一张PPT上塞进尽可能多的内容。PPT是为了在听众记忆里留下印象,引发人考虑的。这意味着你以至不用在上面写完好的句子,简单的描绘就够了。 2.防止逐字逐句读PPT 把PPT当作文字处理软件的一个必然结果就是太多的演讲者站在那里,读PPT上的文字内容。这就产生了一个误区:演讲者遗忘了...
关于ControlJs一共有三篇文章,这是第一部分。ControlJS是让脚本加载更快的一个模块(a javascript module for making scripts load faster). 三篇文章的结构分别为: 1. async loading 2. delayed execution 3. overriding document.write 关于第一部分的异步加载,这个的关键在于尽快将页面作为html绘制出来,然后再用javascript进行优...
标签: 生活常识
关于医保卡的正确使用   相信很多人手上都有一张医保卡,在使用过程中有些事情是要特别留意的,否则就会吃哑巴亏!如果生大病需要住院治疗,好办,只要把卡交给医院,就可以安心治疗了。卡里面一分钱没有也没关系。出院时医院会和医保中心结算,个人只需负担三分之一的费用。如果看门诊呢?那就要用卡内余额支付门诊费用,倘若卡内...
关于闪光灯的使用技巧   闪光灯既可以成就也可以毁掉一张照片!正确的使用闪光灯就能让你拍出精彩的照片。这篇短文会给你介绍一些使用闪光灯的基本方式。爱摄影,追求完美的帅哥美女要好好看了。 1. 使用柔光罩 柔光罩可以削弱光线的硬度。它可以柔化光线,拍摄出更好看的照片。所有的外接闪光灯都可以使用柔光罩,大部分数...
隐藏某列: this.treeListUser.Columns[3].VisibleIndex = -1; 绑定:将数据源指定到一个临时表 this.treeListUser.DataSource = dtUserInfo; this.treeListUser.PopulateColumns(); 不允许编辑,设为只读: dtUserInfo.Columns[0].ReadOnly = true;

经验教程

696

收藏

60
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部