1

我在 SSIS 中有一个包,它使用 essbase 多维数据集中的 adomd.Net 加载数据。使用 2 列包可以正常工作,但是当我添加 3. 列包时失败。

错误信息说:

你调用的对象是空的。

第一行的第三列包含null和其他行中的一些值。

问题在 3. 列中的值中查找。我尝试了这个 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;
    }
4

1 回答 1

2

这段代码的工作方式与预期相反:

 if (!reader.IsDBNull(2))
  {
      Output0Buffer.Column2 = "test";
  }
  else
  {
      Output0Buffer.Column2 = (reader.GetString(2));
  }

!reader.IsDBNull(2)表示值不为空的地方。删除感叹号将解决问题

于 2018-01-25T16:35:06.620 回答