SQL2005 SSIS-在脚本组件中访问数据连接
2007-03-02 15:24
417 查看
SQL2005 SSIS-在脚本组件中访问数据连接
作者:未知 | 文章出处:未知 | 阅读次数:60 | 发布日期:2005-11-07在上文中我们知道了如何在脚本组件中访问包变量,但在其中访问数据连接应该怎么办呢?
通过查看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
好了,到此结束了,如果你知道第一种解决方法或者还有其他解决方法,还请指点,非常感谢
相关文章推荐
- SQL2005 SSIS-在脚本组件中访问数据连接
- 如何在SSIS的脚本组件中访问变量
- 如何在SSIS的脚本组件中访问变量
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- sql2005数据导出sql脚本为insert into
- 【Open】2015.08.03-连接脚本配置错误导致“不精确的数据访问违例”
- 实现类似LINQ TO SQL的功能, 轻量级的数据访问组件
- sql2005数据导出sql脚本为insert into
- SQL 2005 SSIS 导入数据效率问题
- WebService连接sql serever并使用Android端访问数据
- SQL Server Compact 与 SQL Server 2005 通过远程访问进行数据同步
- 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理
- SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程) 分类: 数据库
- 如何在SSIS的脚本组件中访问变量
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- SSIS中ExecuteSQL TASK组件(基于2005 CTP 4月版)
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程)
- SQL2005--SSIS脚本开发--脚本生成数据流