调用存储过程会创建空引用异常

时间:2015-04-06 11:51:31

标签: c# asp.net vb.net

我有一个调用存储过程的简单代码:

bool connOpened = OpenConnectiontoDB();
SqlCommand cmd = new SqlCommand("spRegisterUser", cn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter userName = new SqlParameter("@UserName", username);
SqlParameter pass = new SqlParameter("@Password", password);
SqlParameter user_email = new SqlParameter("@Email", email);

cmd.Parameters.Add(userName);
cmd.Parameters.Add(pass);
cmd.Parameters.Add(user_email);

int returnCode=0;

try
{
    returnCode = (int)cmd.ExecuteScalar();
}
catch (Exception e)
{
    int i = 0;
}

return returnCode;

抛出异常:

returnCode = (int)cmd.ExecuteScalar(); 
  

消息:“对象引用未设置为对象的实例。”

我不知道为什么,我查了一下:

cn.status它显示为open,我可以直接在DB中运行存储过程。并且cmd似乎已填充,这是什么错误?

为什么你说查询返回null?它不是。它运行一个返回整数的存储过程。我测试了sp我只得-1或1。

建议的重复答案不回答这个问题。它仅显示了在object为null时如何处理错误。我的问题是null的原因是什么。

0 个答案:

没有答案