我有一个调用存储过程的简单代码:
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的原因是什么。