抱歉,我是ASP.NET和英语的新手。如果登录验证中的密码或用户不正确,我将遇到此问题,以下错误发生
ProjetoPizzaria.dll中发生了'System.NullReferenceException'类型的异常,但未在用户代码中处理
其他信息:参考文献信息,请参见umainstânciadeum objeto。
翻译:对象引用未设置为对象的实例。
有人可以解释一下它是什么吗?
public String ValidaLogin(String Login, String Senha)
{
String Retorno = "";
try
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=pizzariaDemo");
conn.Open();
Retorno = Retorno + " + Conexao Aberta1";
string sql = "Select [FUNC_SENHA] from [dbo].[TCAD_FUNC]" +
" where [FUNC_LOGIN] = @usuario";
string sql2 = "Select [FUNC_ID] from [dbo].[TCAD_FUNC]" +
" where [FUNC_LOGIN] = @usuario";
Retorno = " + Criando Comando 1";
SqlCommand cmd = new SqlCommand(sql, conn);
Retorno = " + Adicionando Parametros ao Comando 1";
cmd.Parameters.Add(new SqlParameter("@usuario", Login));
//executa o comando com os parametros que foram adicionados acima
Retorno = " + Executando Primeira Query";
string senhaNoBanco = cmd.ExecuteScalar() as string; //Executa a consulta, e retorna a primeira coluna da primeira linha no conjunto de resultados retornados pela consulta. As colunas ou linhas adicionais são ignoradas.
cmd.ExecuteNonQuery();
Retorno = " + Executado Primeira Query";
//fecha a conexao
conn.Close();
Retorno = " + Conexao Fechada1";
//Retorna a chave primaria do Usuário Selecionado
SqlCommand comando2 = new SqlCommand(sql2, conn);
comando2.Parameters.Add(new SqlParameter("@usuario", Login));
conn.Open();
Retorno = " + Conexao Aberta2";
string id_funcionario = comando2.ExecuteScalar().ToString(); //Executa a consulta, e retorna a primeira coluna da primeira linha no conjunto de resultados retornados pela consulta. As colunas ou linhas adicionais são ignoradas.
//comando2.ExecuteNonQuery();
Retorno = " + Conexao Executda Segunda Query";
conn.Close();
Retorno = " + Conexao Fechada2";
//Valida a conexão
if (string.IsNullOrEmpty(senhaNoBanco))
{
//Quando ocorre algum erro como por exemplo Login invalido
Retorno += "Login invalido";
}
else
{
if (senhaNoBanco == Senha)
{
//Conexão realizada com sucesso!
Retorno = "[Conexao Realizada]";//[" + id_funcionario + "]";
}
else
{
//erro com a senha digitada
Retorno = "Senha Invalida";
}
}
}
catch (Exception)
{
throw;
}
finally
{
}
return Retorno;
}
答案 0 :(得分:0)
我删除了下面的部分,它的工作原理!
但我仍然不知道为什么。
SqlCommand comando2 = new SqlCommand(sql2, conn);//Retorna a chave primaria do Usuário Selecionado
comando2.Parameters.Add(new SqlParameter("@usuario", Login));
conn.Open();
Retorno = " + Conexao Aberta2";
string id_funcionario = comando2.ExecuteScalar().ToString(); //Executa a consulta, e retorna a primeira coluna da primeira linha no conjunto de resultados retornados pela consulta. As colunas ou linhas adicionais são ignoradas.
//comando2.ExecuteNonQuery();
Retorno = " + Conexao Executda Segunda Query";
conn.Close();
Retorno = " + Conexao Fechada2";