无法将类型字符串隐式转换为microsoft.sqlserver.dts.runtime.variable

时间:2013-10-14 21:02:04

标签: c# ssis

我试图将一个String存储在visual c#/ visual c sharp中的Dts变量中。但是,我得到以下错误。我该如何解决 ?我之前没有使用过C#,所以我很难弄明白。我确实熟悉Java。

        String v = Dts.Variables["myVar1"].Value + "";
        String x = Dts.Variables["myVar2"].Value + v + "'";
        Dts.Variables["myVar2"] = SQL;  // Why do I get an error here ?

错误是 -

错误1属性或索引器'Microsoft.SqlServer.Dts.Runtime.Variables.this [object]'无法分配 - 它是只读的

错误2无法将类型'string'隐式转换为'Microsoft.SqlServer.Dts.Runtime.Variable'

2 个答案:

答案 0 :(得分:4)

因为引用Dts.VariablesVariable元素的集合,因此您无法将字符串分配给此集合的元素。 (并且,正如另一个答案所指出的,这个集合是只读的)

可能你想要

Dts.Variables["myVar2"].Value = SQL;

答案 1 :(得分:2)

第一个错误的原因是Variables[]索引器是只读的。也就是说,您只能从中读取Dts.Variables["myVar2"]的值,而不是指定新值来替换它。索引器本质上是一个用于在Variables集合上调用函数的语法快捷方式。

第二个错误源于您尝试将String类型值分配给前面提到的索引器,该索引器返回类型为Microsoft.SqlServer.Dts.Runtime.Variable的对象。同样,错误地使用索引器确实会引发第二个错误。

访问索引器返回的变量对象的值的正确方法是通过.Value属性,就像您在示例代码的第一行中所做的那样:

Dts.Variables["myVar2"].Value = SQL;