我在C#项目中使用SP来使用SqlDataReader检索输出。 下面是代码。
public List<LMTUsage> GetCompanyID(string userID, int roleId, String Organisation, String BusinessArea)
{
List<LMTUsage> objLMT = new List<LMTUsage>();
LMTUsage _oELMTUsage;
SqlConnection oCon = new SqlConnection(ConfigurationManager.ConnectionStrings["LMTConnectionString"].ConnectionString);
oCon.Open();
try
{
using (SqlCommand _oCmd = new SqlCommand())
{
_oCmd.Connection = oCon;
_oCmd.CommandType = CommandType.StoredProcedure;
_oCmd.CommandText = "[SC_GetDropdownValues]";
_oCmd.Parameters.Add(new SqlParameter("@UserId", userID));
_oCmd.Parameters.Add(new SqlParameter("@RoleId", roleId));
if (Organisation == "")
_oCmd.Parameters.Add(new SqlParameter("@Organisation", DBNull.Value));
else
_oCmd.Parameters.Add(new SqlParameter("@Organisation", Organisation));
if (BusinessArea == "")
_oCmd.Parameters.Add(new SqlParameter("@BusinessArea", DBNull.Value));
else
_oCmd.Parameters.Add(new SqlParameter("@BusinessArea", BusinessArea));
_oCmd.Parameters.Add(new SqlParameter("@Type", 3));
using (SqlDataReader _oRdr = _oCmd.ExecuteReader())
{
// _oRdr.Close();
while (_oRdr.Read())
{
_oELMTUsage = new LMTUsage();
_oELMTUsage.Company = _oRdr["Company"].ToString();
objLMT.Add(_oELMTUsage);
}
_oRdr.Close();
}
}
return objLMT;
}
catch (Exception Ex)
{
throw Ex;
}
//finally
//{
// oCon.Close();
// oCon.Dispose();
//}
}
这是带有select语句的非常简单的SP。 从SQL 2014执行时,SP返回输出,但以上述方法实现时,它不返回任何输出。 以下是参考屏幕。
请指导。
答案 0 :(得分:0)
除非您的存储过程被专门命名为[SC_GetDropdownValues](包括方括号),否则不需要在SqlCommand的CommandText
中定义方括号。试试:
_oCmd.CommandText = "SC_GetDropdownValues";
答案 1 :(得分:0)
请检查参数中的值。 并使用带有fill方法的数据集从sp中检索数据,而不是使用ExecuteReader()。