如何在数据流脚本组件中访问现有的ADO.NET连接管理器

时间:2019-03-29 13:58:03

标签: c# sql-server ssis etl script-component

我想对数据流中的每一行执行SQL语句,因此我在数据流中使用脚本组件(而非脚本任务)。 我尝试了如下代码,但无法编译。

using (SqlConnection connection = this.Connections.Connection.AcquireConnection(null) as SqlConnection)
{
    using (SqlCommand command = connection.CreateCommand())
    {
        command.CommandText = "SELECT [Value] FROM dbo.MyTable";
        command.CommandType = CommandType.Text;

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                ProfanityWords.Add(reader.GetValue(0).ToString());
            }
        }
    }

    this.Connections.Connection.ReleaseConnection(connection);
}

1 个答案:

答案 0 :(得分:2)

您是否在脚本组件上添加了对连接管理器的引用?这可以通过在脚本组件的“连接管理器”选项卡上添加ADO.NET连接管理器来完成。此后,可以按以下方式访问它。下面的示例是代码的修改版本,其中MyConnection是脚本组件GUI上给连接管理器的名称。

using (SqlConnection connection = this.Connections.MyConnection.AcquireConnection(null) as SqlConnection)
{
    using (SqlCommand command = connection.CreateCommand())
    {
        command.CommandText = "SELECT [Value] FROM dbo.MyTable";
        command.CommandType = CommandType.Text;

        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                ProfanityWords.Add(reader.GetValue(0).ToString());
            }
        }
    }

    this.Connections.MyConnection.ReleaseConnection(connection);
}