Error in doing search by name Access ASP.NET C #

0

I have a search error by name (value entered by the user) in the access database it says that the values inside the parameters are null. Follow the code.       Person.cs responsible for the bank's logic.

public Contato obterCadastroPorNome(string Nome)
{
    ConexaoDAL conexaoAccess = null;
    try
    {
        conexaoAccess = new ConexaoDAL();
        conexaoAccess.AbrirConexao();
        OleDbCommand ComandoAccess = new OleDbCommand("select*from Contato where NOME=@NOME", conexaoAccess.ConexaoAccess);
        ComandoAccess.Parameters.AddWithValue("@NOME", Nome);
        conexaoAccess.ComandoDataReaderAccess.Read();
        return null;

    }
    catch (Exception ex)
    {
        throw new Exception("Erro ao pesquisar clientes" + ex.Message);
    }
    finally
    {
        conexaoAccess.FecharConexao();
    }
} // metodo para pesquisar cadastro por id 

public List<Contato> ListaDeContato()
{
    ConexaoDAL conexaoAccess = null;
    try
    {
        conexaoAccess.AbrirConexao();
        OleDbCommand ComandoAccess = new OleDbCommand("select * from Contato ", conexaoAccess.ConexaoAccess);
        conexaoAccess.ComandoDataReaderAccess = ComandoAccess.ExecuteReader();
        List<Contato> lista = new List<Contato>();
        while (conexaoAccess.ComandoDataReaderAccess.Read())
        {
            lista.Add(new Contato(conexaoAccess.ComandoDataReaderAccess));
        }
        return lista;
    }
    catch (Exception ex)
    {
        throw new Exception("Erro ao pesquisar Lista de clientes " + ex.Message);
    }
    finally
    {
        conexaoAccess.FecharConexao();
    }

Contact.cs

namespace DAL.Model
{
    public class Contato
    {
        public int Codigo { get; private set; }
        public string Nome, Email, Fone;

        public Contato(string nome, string email, string fone)
        {
            Nome = nome;
            Email = email;
            Fone = fone;
        }
        public Contato(int codigo, string nome, string email, string fone)
        {
            Codigo = codigo;
            Nome = nome;
            Email = email;
            Fone = fone;
        }

        public Contato(OleDbDataReader comandoDataReader)
        {
            Codigo = Convert.ToInt32(comandoDataReader["CODIGO"]);
            Nome = Convert.ToString(comandoDataReader["NOME"]);
            Email = Convert.ToString(comandoDataReader["EMAIL"]);
            Fone = Convert.ToString(comandoDataReader["FONE"]);
        }

    }
}


public void btnPesquisar_Click(object sender, EventArgs e)
{
    garregarInfo();
}

public void garregarInfo()
{
    try
    {
        string NOME = Convert.ToString(txtPesquisar.Text);
        Pessoa pessoa = new Pessoa();
        Contato contato = pessoa.obterCadastroPorNome(NOME);
        if (contato != null)
        {
            pnlPesquisa.Visible = true;
            txtNovoNome.Text = contato.Nome;
        }
        else
        {
            Message.Text = "Registro não encontrado";
        }

    }
    catch (Exception ex)
    {
        throw new Exception(Message.Text = ex.Message);
    }

}
    
asked by anonymous 11.11.2016 / 13:35

1 answer

3

As the error message itself says, it is not possible to stop a parameter null pro method AddWithValue . You will need to do a validation and if the string is null, send the value as "" (empty string).

ComandoAccess.Parameters.AddWithValue("@NOME", Nome ?? "");
    
11.11.2016 / 18:47