我在SSIS中有一个包,它使用来自essbase cube的adomd.Net加载数据。有2列包工作正常,但当我添加3.列包失败。
错误消息说:
对象引用未设置为对象的实例。
第一行中的第三列包含 null ,其他行包含一些值。
问题在3.列中的 null 值中查找。 我尝试了这个if语句但是我得到空列而不是值。
AdomdDataReader reader = null;
try
{
using (AdomdConnection conn = new AdomdConnection(connectionString))
{
conn.Open();
using (AdomdCommand cmd = new AdomdCommand(query, conn))
{
reader = cmd.ExecuteReader();
while (reader.Read())
{
Output0Buffer.AddRow();
Output0Buffer.Column = (reader.GetString(0));
Output0Buffer.Column1 = (reader.GetString(1));
if (!reader.IsDBNull(2))
{
Output0Buffer.Column2 = "test";
}
else
{
Output0Buffer.Column2 = (reader.GetString(2));
}
Console.WriteLine("fin");
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
答案 0 :(得分:2)
这段代码的工作方式与预期相反:
if (!reader.IsDBNull(2))
{
Output0Buffer.Column2 = "test";
}
else
{
Output0Buffer.Column2 = (reader.GetString(2));
}
!reader.IsDBNull(2)
表示值不为null。删除感叹号将解决问题