Try {} Catch(exception){throw}上发生类型'System.NullReferenceException'的异常

时间:2014-11-22 23:48:31

标签: c# asp.net try-catch nullreferenceexception

抱歉,我是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;
}

1 个答案:

答案 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";