通常,在 SSIS 组件中,“String”类型的输入列具有用户定义的长度。
例如在我的 Output0Buffer 中,我有 Column1 DataType=Unicode string [DT_WSTR] Length=15。
在 SSIS 程序 (C#) 中,是否可以通过编程方式找到值“15”?我通常使用 System.Reflection 来获取数据类型并使用 SetValue 方法在我的缓冲区中分配值。
例子:
foreach (PropertyInfo p in props)
{
if (p.GetType() == typeof(string))
{
p.SetValue(Output0Buffer, Convert.ToString(value), null);
}
...
}
但有时,我超出了缓冲区大小,这会引发异常。我希望能够获得缓冲区长度,而不是拥有这个,以便在将值分配给缓冲区之前截断这些值。
或者,我总是可以使用传统的方式来分配缓冲区的值,即 Output0Buffer.Column1 = value.substring(0,15);
但这将是太多的代码输入:) 我宁愿尝试通过 Buffer 属性循环并相应地填充。
希望你们能帮帮我。提前致谢。