我的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调用,因为阅读器已关闭。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
阅读器是通过您的连接进行连接的。一旦使用声明超出范围,连接就会被处理掉,而您的读者现在已经与源断开连接。
相反,您需要将结果加载到PreExecute中的DataSet / DataTable中,然后在您准备好时枚举结果。
将PreExecute逻辑推送到CreateNewOutputRows方法。
MSDN使用ResultSet和填充数据集的链接