连接到SQL Server数据库时WCF服务错误

时间:2018-01-01 18:15:41

标签: sql-server wcf sqldatareader

我编写了一个连接到SQL Server 2008数据库的WCF服务。我偶尔会在存储过程执行时收到以下错误:

  

已经有一个与此命令关联的开放式数据加载器,必须先关闭

请注意,我没有使用DataReader,我使用的是SqlDataAdapter,而是定义为本地变量。

我正在调用SqlCommandSqlDataAdapter类的dispose方法,但我仍然收到此错误。

请告知我在这里遗失的内容。

  public DataTable executeScalerDT(string sSPName, string[] sParameterNames, string[] sParameterValues, string[] sParameterDataTypes)
    {
        int iReturnCode = 0;
        DataTable oDataTable = null;
        int i = 0;
        try
        {

            SqlCommand oSQLCommand = new SqlCommand(sSPName, oConnection);
            oSQLCommand.CommandType = CommandType.StoredProcedure;
            SqlParameter oSQLParameter = null;
            SqlParameter p_RETURN_CODE = null;


            for (i = 0; i < sParameterNames.Length; i++)
            {
                if (sParameterNames[i] != "@iReturnCode")
                {
                    oSQLParameter = oSQLCommand.Parameters.Add(sParameterNames[i], getDataType(sParameterDataTypes[i]));
                    oSQLParameter.Direction = ParameterDirection.Input;
                    oSQLParameter.Value = sParameterValues[i];
                }
                else
                {
                    p_RETURN_CODE = oSQLCommand.Parameters.Add("@iReturnCode", getDataType(sParameterDataTypes[i]));
                    p_RETURN_CODE.Direction = ParameterDirection.Output;
                }
            }
            SqlDataAdapter oSqlAdapter = new SqlDataAdapter(oSQLCommand);
            oDataTable = new DataTable();
            oSqlAdapter.Fill(oDataTable);
            oSqlAdapter.Dispose();
            oSQLCommand.Dispose();            
        }
        catch (Exception ex)
        {
            SharedClasses.Logger.Error("[DAL.executeScalerDT] Exception Occurred sSPName:" + sSPName  +" sTemplateCode:" + sTemplateCode  + " ex:" + ex.Message);
        }
        return oDataTable;
    }

0 个答案:

没有答案