检查ADO.NET / OLEDB连接是否存在

时间:2012-06-26 21:53:31

标签: c# ado.net ssis oledb custom-component

我正在开发一个自定义SSIS组件,供整个公司使用。现在代码(来自here)只接受ADO.NET连接类型。

我也想支持OLEDB类型,并希望相应地更改我的代码。检查有效ADO.NET连接的代码是:

SqlConnection connection = connections[_connectionName].AcquireConnection(null) as SqlConnection;

     if (connection == null)
          {
          componentEvents.FireError(0, METHOD_NAME, "The connection is not a valid ADO.NET connection", "", -1);
          return DTSExecResult.Failure;
          }

这只会检查有效的ADO.NET连接。如何更改此项以检查OLEDB连接。因此,例如,如果连接类型是OLEDB,则应该接受它,如果它们都不是,它应该失败。

我不是一个C#人,所以我正在寻找任何帮助,我可以得到这个。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您可以使用is关键字来确定对象是否是指定类型的实例(或从指定类型派生的类型)。 see MSDN

var connection = connections[_connectionName].AcquireConnection(null);

if (!(connection is SqlConnection || connection is OleDbConnection))
{
     componentEvents.FireError(0, METHOD_NAME, "The connection is not a valid ADO.NET connection", "", -1);
          return DTSExecResult.Failure;
}

如果您想确定连接是否为任何DbConnection类型(SqlConnectionOleDbConnection都来自哪个类型),您可以执行以下操作:

DbConnection connection = connections[_connectionName].AcquireConnection(null) as DbConnection;

if (connection == null)
{
    componentEvents.FireError(0, METHOD_NAME, "The connection is not a valid ADO.NET connection", "", -1);
    return DTSExecResult.Failure;
}