转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
SQL2005 SSIS-在脚本组件中访问数据连接         

SQL2005 SSIS-在脚本组件中访问数据连接

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1137 更新时间:2007/11/14 13:08:52

在上文中我们知道了如何在脚本组件中访问包变量,但在其中访问数据连接应该怎么办呢?
通过查看DTS类的属性我们知道其有一个 Connections 属性,其对应的正是SSIS设计面板中连接管理器中连接的映射
比如我们在连接管理器中建立一个 ADO.NET 的连接,命名为 connect1
那么在组件代码中我们就可以通过下面2种方式访问这个连接,如下
 Dts.Connections(0)
 或者
 Dts.Connections("connect1")

但是其并不是连接对象,不能直接作用于命令对象中,故需要强制转换为连接对象,如下代码:
    Dim sqlConn As SqlConnection
    sqlConn = CType(Dts.Connections(0).AcquireConnection(Nothing), SqlConnection)
  需要注意,不能直接CType(Dts.Connections(0), SqlConnection),需要用该对象的AcquireConnection方法获得一个连接,再强制转换
  
好了,现在已经转换为连接对象,你可以使用如下代码再该连接中执行命令
    Dim command As New SqlClient.SqlCommand
        command.Connection = sqlConn
        command.CommandType = CommandType.Text
        command.CommandText = "你的命令"
        command.ExecuteNonQuery()
        command = Nothing

本来到此就应该结束此文了,但是可惜的是还要继续下去

上面提到的是在连接管理器中建立一个ADO.NET的连接,如果你建立一个OLE.DB的连接,在运行上面代码,你会得到下面错误:  
  Unable to cast COM object of type ''''System.Data.OleDb.OleDbConnection'''' to class type ''''''''.
  Instances of types that represent COM components cannot be cast to types that do not represent COM components;
  however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.
  
  上面的大概意思就是说,不能进行强制类型转换,当前对象没有提供这样的接口

明白了把,就是说不行,也就是说你建立的是OLE.DB连接,那么 AcquireConnection 方法返回的也是一个 OLE.DB的连接对象,你不能用SqlConnection去替代它

怎么办呢,解决方法有二
一是把OLE.DB连接对象的类型找出来,并引用上它,然后再用它强制转换,但是可惜的是我不知道怎么样才能。。。。;
二就是建立一个ADO.NET的连接好了,可是我又怕它是不是会比OLE.DB的连接处理速度要慢,所以之后通融一下了,代码如下

Public Class ScriptMain
 Public Sub Main()
        Dim command As New SqlClient.SqlCommand
        Dim cn As New SqlClient.SqlConnection
        MsgBox(Dts.Connections(0).ConnectionString)
        cn.ConnectionString = "" + Dts.Connections(0).ConnectionString
        cn.Open()
        MsgBox(Err.Description)
        command.Connection = cn
        command.CommandType = CommandType.Text
        command.CommandText = "insert into pay_dur(code) values(''''1'''')"
        command.ExecuteNonQuery()
        command = Nothing
        cn.Close()
 End Sub
 
好了,到此结束了,如果你知道第一种解决方法或者还有其他解决方法,还请指点,非常感谢 


[Web开发]VS2005发布网站与生成网站的区别  [聊天工具]新浪UC2005III正式版发布
[聊天工具]新浪UC2005III Beta2新鲜试用__天极Yesky  [聊天工具]新浪UC2005III Beta2新功能介绍__天极Yesky
[聊天工具]UC2005III Beta2发布 主界面重新设计__天极Yesky  [聊天工具]新浪UC2005III Beta1新功能介绍__天极Yesky
[聊天工具]最精简的QQ2005:只用最核心的几个文件  [聊天工具]腾讯QQ2005 Beta3珊瑚虫版 v3.2发布__天极Yesky
[聊天工具]体验UC2005III新版超级视频、多视频聊天室  [聊天工具]QQ2005Beta3常见问题解答(下)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台