Erro ao pesquisar em cadastro de clientes (Detalhes: A cadeia de caracteres de entrada não estava em um formato correto)

Pessoal, sou novo no .NET e pra ir aprendendo, estou fazendo o campo de cadastro de clientes, e na tela temo um text box, um button e um DataGridView. A pessoa digita o nome do cliente no text box, clica no button Pesquisar e é pra aparecer os clientes cadastrados no banco de dados no DataGridView, só que quando eu digito um NUMERO clico no button Pesquisar, ele aparece so as colunas no grid, sem as informações lá castradas (mas não é pra funcionar com numero, é com letra apenas, pois é ConsultaPorNome) e quando digito uma LETRA e aperto o button Pesquisar, aparece o seguinte erro:
An unhandled exception of type ‘System.Exception’ occurred in Negocios.dll
Detalhes: A cadeia de caracteres de entrada não estava em um formato correto.
E trava a aplicação e volta pro Visual Studio

No meu caso, estou usando o Visual Studio 2015 e o SQL Server 2012, liguei os dois e usei Stored Procedure, tenho uma que chama uspClienteConsultarPorNome, e uma que chama uspClienteConsultarPorId (Ainda não fiz o campo de consultar por id).
Gostaria de saber o que é esse erro e como resolver, segue alguns codigos:

Camada das Telas:
`namespace Apresentacao
{
public partial class FrmClienteSelecionar : Form
{
public FrmClienteSelecionar()
{
InitializeComponent();
}

    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
       
    }

    private void buttonSair_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void buttonPesquisar_Click(object sender, EventArgs e)
    {
        ClienteNegocios clienteNegocios = new ClienteNegocios();

        ClienteColecao clienteColecao = new ClienteColecao();
        clienteColecao = clienteNegocios.ConsultarPorNome(textBoxNome.Text);

        dataGridViewPrincipal.DataSource = null;
        dataGridViewPrincipal.DataSource = clienteColecao;

        dataGridViewPrincipal.Update();
        dataGridViewPrincipal.Refresh();
    }
}

}`

Camada de Acesso ao Banco de Dados:
`namespace AcessoBancoDados
{
public class AcessoDadosSqlServer
{
// Cria conexão
private SqlConnection CriarConexao() // Private é privado, apenas essa class pode ver. SqlConnection = Abrir Conexão
{
return new SqlConnection(Settings.Default.stringConexao); // É pra retornor uma nova Conexão
}

    // Parâmetros que vão para o banco
    private SqlParameterCollection sqlParameterCollection = new SqlCommand().Parameters;

    public void LimparParametros()              // Publica, usada para limpar os parametros, as vezes tem algum lixo e pode atrapalhar
    {
        sqlParameterCollection.Clear();
    }

    public void AdicionarParametros (string nomeParametro, object valorParametro)
    {
        sqlParameterCollection.Add(new SqlParameter(nomeParametro, valorParametro));     // Coleção de Parametros
    }

    // Persistência - Inserir, Alterar, Excluir 
    public object ExecutarManipulacao(CommandType commandType, string nomeStoredProcedureOuTextoSql)
    {
        try
        {
            // Cria a conexão
            SqlConnection sqlRodovia = CriarConexao();
            // Abrir a conexão
            sqlRodovia.Open();
            // Criar comando que vai levar a informação para o banco
            SqlCommand sqlCaixinha = sqlRodovia.CreateCommand();
            // Colocando as coisas dentro do comando (dentro da caixa que vai trafegar na conexão)
            sqlCaixinha.CommandType = commandType;                     // CommandType = Está dizendo se é Procedure ou Texto que vai trafegar
            sqlCaixinha.CommandText = nomeStoredProcedureOuTextoSql;   // CommandText = Nome da Procedure ou text que vai trafegar
            sqlCaixinha.CommandTimeout = 7200; //Em Segundos                     // Tem que colocar, se não fica 30s só e é muito pouco

            // Add os parametros no comando
            foreach (SqlParameter sqlParameter in sqlParameterCollection)    // For que percorre a coleção (para cada parameter nessa coleção)
                sqlCaixinha.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));  // Nesse comando stá colocando dentro da "caixa" todos os parametros e os valores deles pra ir pro banco 

            // Executar o comando, ou seja, mandar o comando ir até o banco de dados
            return sqlCaixinha.ExecuteScalar(); // Caixinha, vc já tem tudo pronto ai, vai lá no banco, faz o que tem que fazer e voltar

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

    }

    // Consultar registros do banco de dados
    public DataTable ExecutarConsulta(CommandType commandType, string nomeStoredProcedureOuTextoSql)
    {   // Mesmo corpo que está em cima, muda pouca coisa
        try
        {
            // Cria a conexão
            SqlConnection sqlRodovia = CriarConexao();                
            // Abrir a conexão
            sqlRodovia.Open();                
            // Criar comando que vai levar a informação para o banco
            SqlCommand sqlCaixinha = sqlRodovia.CreateCommand();                
            // Colocando as coisas dentro do comando (dentro da caixa que vai trafegar na conexão)
            sqlCaixinha.CommandType = commandType;                     
            sqlCaixinha.CommandText = nomeStoredProcedureOuTextoSql;   
            sqlCaixinha.CommandTimeout = 7200;                
            // Add os parametros no comando
            foreach (SqlParameter sqlParameter in sqlParameterCollection)
                sqlCaixinha.Parameters.Add(new SqlParameter(sqlParameter.ParameterName, sqlParameter.Value));               
            // Criar um adaptador
            SqlDataAdapter sqlAdaptadorTradutor = new SqlDataAdapter(sqlCaixinha);                
            // Data Table = Tabela de Dados vazia onde eu vou colocar os dados que vem do banco
            DataTable dataTable = new DataTable();
            // Mandar a caixinha ir até o banco buscar os dados e o adaptador preencher o datatable
            sqlAdaptadorTradutor.Fill(dataTable);

            return dataTable;

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

}`

Camada Objeto Transferencia:
`namespace ObjetoTransferencia
{
public class Cliente
{
public int id_cliente { get; set; }
public string nome_cliente { get; set; }
public DateTime datanasc_cliente { get; set; }
public string tel_cliente { get; set; }
public string cpf_cliente { get; set; }
public string rg_cliente { get; set; }
public int paisnasc_cliente_id { get; set; }
public string cidadenasc_cliente { get; set; }
public string estadonasc_cliente { get; set; }
public Boolean moradiafixa_cliente { get; set; }
public string enderecomf_cliente { get; set; }
public string numeromf_cliente { get; set; }
public int paismf_cliente { get; set; }
public string cidademf_cliente { get; set; }
public int estadomf_cliente { get; set; }

}

}`

Coleção:
namespace ObjetoTransferencia { public class ClienteColecao : List<Cliente> { } }

Camada ClienteNegocios:
`namespace Negocios
{
public class ClienteNegocios
{
// Instanciar = Criar um novo objeto baseado em um modelo
AcessoDadosSqlServer acessoDadosSqlServer = new AcessoDadosSqlServer();

    public string Inserir(Cliente cliente)
    {
        try
        {
            acessoDadosSqlServer.LimparParametros();
            acessoDadosSqlServer.AdicionarParametros("@nome_cliente", cliente.nome_cliente);
            acessoDadosSqlServer.AdicionarParametros("@datanasc_cliente", cliente.datanasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@cpf_cliente", cliente.cpf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@rg_cliente", cliente.rg_cliente);
            acessoDadosSqlServer.AdicionarParametros("@paisnasc_cliente_id", cliente.paisnasc_cliente_id);
            acessoDadosSqlServer.AdicionarParametros("@cidadenasc_cliente", cliente.cidadenasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@estadonasc_cliente", cliente.estadonasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@moradiafixa_cliente", cliente.moradiafixa_cliente);
            acessoDadosSqlServer.AdicionarParametros("@enderecomf_cliente", cliente.enderecomf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@numeromf_cliente", cliente.numeromf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@paismf_cliente", cliente.paismf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@cidademf_cliente", cliente.cidademf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@estadomf_cliente", cliente.estadomf_cliente);
            string idCliente = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteInserir").ToString();
            return idCliente;
        }
        catch (Exception exception)
        {
            return exception.Message;
        }

    }

    public string Alterar(Cliente cliente)
    {
        try
        {
            acessoDadosSqlServer.LimparParametros();
            acessoDadosSqlServer.AdicionarParametros("@id_cliente", cliente.id_cliente);
            acessoDadosSqlServer.AdicionarParametros("@nome_cliente", cliente.nome_cliente);
            acessoDadosSqlServer.AdicionarParametros("@datanasc_cliente", cliente.datanasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@cpf_cliente", cliente.cpf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@rg_cliente", cliente.rg_cliente);
            acessoDadosSqlServer.AdicionarParametros("@paisnasc_cliente_id", cliente.paisnasc_cliente_id);
            acessoDadosSqlServer.AdicionarParametros("@cidadenasc_cliente", cliente.cidadenasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@estadonasc_cliente", cliente.estadonasc_cliente);
            acessoDadosSqlServer.AdicionarParametros("@moradiafixa_cliente", cliente.moradiafixa_cliente);
            acessoDadosSqlServer.AdicionarParametros("@enderecomf_cliente", cliente.enderecomf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@numeromf_cliente", cliente.numeromf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@paismf_cliente", cliente.paismf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@cidademf_cliente", cliente.cidademf_cliente);
            acessoDadosSqlServer.AdicionarParametros("@estadomf_cliente", cliente.estadomf_cliente);
            string idCliente = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteAlterar").ToString();
            return idCliente;
        }
        catch(Exception exception)
        {
            return exception.Message;
        }
    }

    public string Excluir(Cliente cliente)
    {
        try
        {
            acessoDadosSqlServer.LimparParametros();
            acessoDadosSqlServer.AdicionarParametros("@id_cliente", cliente.id_cliente);
            string idCliente = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteExcluir").ToString();
            return idCliente;
        }
        catch(Exception exception)
        {
            return exception.Message;
        }
    }

    public ClienteColecao ConsultarPorNome(string nome)
    {
        try
        {
            // Criar um coleção nova de clientes (aqui ela está vazia)
            ClienteColecao clienteColecao = new ClienteColecao();

            acessoDadosSqlServer.LimparParametros();
            acessoDadosSqlServer.AdicionarParametros("@nome_cliente", nome);

            DataTable dataTableCliente = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspClienteConsultarPorNome");

            foreach (DataRow linha in dataTableCliente.Rows)
            {
                //Criar um cliente vazio
                //Colocar os dados da linha nele
                //Adicionar ele na coleção
                Cliente cliente = new Cliente();
                cliente.id_cliente = Convert.ToInt32(linha["id_cliente"]);
                cliente.nome_cliente = Convert.ToString(linha["nome_cliente"]);
                cliente.datanasc_cliente = Convert.ToDateTime(linha["datanasc_cliente"]);
                cliente.tel_cliente = Convert.ToString(linha["tel_cliente"]);
                cliente.cpf_cliente = Convert.ToString(linha["cpf_cliente"]);
                cliente.rg_cliente = Convert.ToString(linha["rg_cliente"]);
                cliente.paisnasc_cliente_id = Convert.ToInt32(linha["paisnasc_cliente_id"]);
                cliente.cidadenasc_cliente = Convert.ToString(linha["cidadenasc_cliente"]);
                cliente.estadonasc_cliente = Convert.ToString(linha["estadonasc_cliente"]);
                cliente.moradiafixa_cliente = Convert.ToBoolean(linha["moradiafixa_cliente"]);
                cliente.enderecomf_cliente = Convert.ToString(linha["enderecomf_cliente"]);
                cliente.numeromf_cliente = Convert.ToString(linha["numeromf_cliente"]);
                cliente.paismf_cliente = Convert.ToInt32(linha["paismf_cliente"]);
                cliente.cidademf_cliente = Convert.ToString(linha["cidademf_cliente"]);
                cliente.estadomf_cliente = Convert.ToInt32(linha["estadomf_cliente"]);

                clienteColecao.Add(cliente);

            }

            return clienteColecao; 
        }
        catch(Exception ex)
        {
            throw new Exception("Não foi possivel consultar o cliente por nome. Detalhes: " + ex.Message);
        }
    }

    public ClienteColecao ConsultarPorId(int id_cliente)
    {
        try
        {
            ClienteColecao clienteColecao = new ClienteColecao();

            acessoDadosSqlServer.LimparParametros();
            acessoDadosSqlServer.AdicionarParametros("@id_cliente", id_cliente);

            DataTable dataTableCliente = acessoDadosSqlServer.ExecutarConsulta(CommandType.StoredProcedure, "uspClienteConsultarPorId");

            foreach (DataRow dataRowlinha in dataTableCliente.Rows)
            {   
                Cliente cliente = new Cliente();
                cliente.id_cliente = Convert.ToInt32(dataRowlinha["id_cliente"]);
                cliente.nome_cliente = Convert.ToString(dataRowlinha["nome_cliente"]);
                cliente.datanasc_cliente = Convert.ToDateTime(dataRowlinha["datanasc_cliente"]);
                cliente.tel_cliente = Convert.ToString(dataRowlinha["tel_cliente"]);
                cliente.cpf_cliente = Convert.ToString(dataRowlinha["cpf_cliente"]);
                cliente.rg_cliente = Convert.ToString(dataRowlinha["rg_cliente"]);
                cliente.paisnasc_cliente_id = Convert.ToInt32(dataRowlinha["paisnasc_cliente_id"]);
                cliente.cidadenasc_cliente = Convert.ToString(dataRowlinha["cidadenasc_cliente"]);
                cliente.estadonasc_cliente = Convert.ToString(dataRowlinha["estadonasc_cliente"]);
                cliente.moradiafixa_cliente = Convert.ToBoolean(dataRowlinha["moradiafixa_cliente"]);
                cliente.enderecomf_cliente = Convert.ToString(dataRowlinha["enderecomf_cliente"]);
                cliente.numeromf_cliente = Convert.ToString(dataRowlinha["numeromf_cliente"]);
                cliente.paismf_cliente = Convert.ToInt32(dataRowlinha["paismf_cliente"]);
                cliente.cidademf_cliente = Convert.ToString(dataRowlinha["cidademf_cliente"]);
                cliente.estadomf_cliente = Convert.ToInt32(dataRowlinha["estadomf_cliente"]);

                clienteColecao.Add(cliente);

            }

            return clienteColecao;
        }
        catch (Exception ex)
        {
            throw new Exception("Não foi possivel consultar o cliente por id. Detalhes: " + ex.Message);
        }
    }


}

}`

Creio que devia ser alguma incompatibilidade ou algum código alterado de forma errada, pois eu tinha um projeto e copiei esse projeto e comecei a fazer alterações nele e isso deve ter danificado o código. Para resolver, exclui tudo e comecei novamente e deu tudo certo.