没有通过ExecuteReader获取存储过程输出变量

时间:2011-01-10 12:15:52

标签: asp.net stored-procedures executereader

这里是我的代码 -

 using (SqlDataReader sqlDataReader = ExecuteReader(CommandType.StoredProcedure, StoredProcedures.AuthenticateUser, sqlParameter))
        {
            isAuthenticated = Convert.ToBoolean(sqlParameter[2].Value);
            if (isAuthenticated)
            {
                if (sqlDataReader.Read())
                {
                    User = new UserEntity();
                    DbHelper.GetEntity(sqlDataReader, User);
                }                 
            }
        }

我总是将isAuthenticated视为错误,因为sqlParameter[2].Value始终为空,但是当我使用ExecuteNonQuery执行查询时,它会给我值,但在这种情况下,我无法填写entity.suggest请。

1 个答案:

答案 0 :(得分:0)

我相信在您阅读DataReader的所有结果之前,输出参数不可用。试试这个:

using (SqlDataReader sqlDataReader = ExecuteReader(CommandType.StoredProcedure, 
       StoredProcedures.AuthenticateUser, sqlParameter))
{
     var newUser = new UserEntity();
     if (sqlDataReader.Read())
     {             
         DbHelper.GetEntity(sqlDataReader, User);
     }

     isAuthenticated = Convert.ToBoolean(sqlParameter[2].Value);         
     if (isAuthenticated)
     {
         User = newUser;
     }
 }