0

我的 SSIS 脚本组件有问题。在我的 CreateNewOutputRows 方法获得它之前,我的 Reader 似乎已经关闭了。任何人都可以帮助我吗?

OdbcConnection odbcConn;
OdbcCommand odbcCmd;
OdbcDataReader odbcReader;

public override void PreExecute()
{
    base.PreExecute();
    using (odbcConn = new OdbcConnection(this.Connections.InformixODBC.ConnectionString))
    {
        odbcConn.Open();
        string cmdText = Variables.INFORMIXQUERY;
        cmdText = cmdText.Replace("{{START_DATETIME}}", "'" + Variables.STARTDATETIME + "'");
        cmdText = cmdText.Replace("{{END_DATETIME}}", "'" + Variables.ENDDATETIME + "'");

        odbcCmd = new OdbcCommand(cmdText, odbcConn);
        odbcReader = odbcCmd.ExecuteReader();
    }
}

这就是我目前设置阅读器的方式。我逐步完成,它似乎退出了 PreExecute 方法并进入了 CreateNewOutputRows 方法,但是由于阅读器已关闭,我无法进行任何 AddRow 调用。

任何帮助将非常感激。谢谢!

4

1 回答 1

1

阅读器是通过您的连接连接的。一旦 using 语句超出范围并且瞧,连接就会被处理掉,您的阅读器现在与源断开连接。

相反,您需要将结果加载到 PreExecute 中的 DataSet/DataTable 中,然后在准备好时枚举结果。

或者将您的 PreExecute 逻辑推送到 CreateNewOutputRows 方法中。

用于使用 ResultSet 和填充 DataSet 的 MSDN 链接

于 2014-10-14T18:08:15.613 回答