none
Data Adapter com SELECT e cláusula WHERE RRS feed

  • Pergunta

  • Estou tentando procurar somente o resgistro passado como parametro pelo usuário, porém ele não retorna nada ou não esta preenchendo o DataGridView.

    O que posso estar fazendo de errado?

      
            public void getLikeConta(string parametroWhere, string parametroCondicao, DataGridView dataGrid)
            {
    
                var query = "SELECT nome,usuario,email,administrador FROM GSCUsuarios WHERE @parametroWhere = @parametroCondicao";
    
                SqlConnection con = BancoDados.Criarconexao();
    
                con.Open();
    
                SqlDataAdapter dataAdapter = new SqlDataAdapter(query, con);
                dataAdapter.SelectCommand.Parameters.AddWithValue("@parametroWhere", parametroWhere);
                dataAdapter.SelectCommand.Parameters.AddWithValue("@parametroCondicao", parametroCondicao);
    
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
    
                DataSet ds = new DataSet();
                dataAdapter.Fill(ds);
                dataGrid.ReadOnly = true;
                dataGrid.DataSource = ds.Tables[0];
    
                commandBuilder.Dispose();
                con.Close();
                con.Dispose();
            }
    

    quarta-feira, 16 de dezembro de 2015 03:14

Respostas

  • O teu Select esta errado, voce tem apenas 1 parametros no teu select, deveria ser 2 parametros. 

     WHERE Nomedo campo na tabela  = @parametroWhere And Nome do outro campo = @parametroCondicao

    Esta teu metodo deveria retornar uma tabela ou uma lista, seria a forma correcta de programar. Porque?

    por que voce esta a fazer uma procura na tabela que traz resultados entao deveria ser um metodo que retorna algo. So se usa metodos void quando nao se quer retornar nada. por exemplo

    Public void LimparTextbox()

    {

    textbox1.text ="";

    textbox2.text ="";

    }

    No teu caso seria:

    public DataTable getLikeConto(string parametroWhere, string parametroCondicao) //remove o teu datagridview


    Nao use este comando --SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

    isto so se usaquando queromos fazer update na tabela...

    Troca Dataset pra Datatable... DataSet ds = new DataSet(); Porque?

    Porque Dataset e apenas usado quando se quer pesquizar mais de uma tabela. No teu caso

    tu apenas usas uma tabela...

    Tenta usar nomes no teu parametros dos campos que representam a condicao por exemplo

    string parametroWhere, string parametroCondicao, poderia ser

    string parametroUsusario, string parametroEmail. Porque? desta forma fica facil saber onde estas

    a errar. se voce usa nomes vulgares, nao teras ideias do que representa...


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ quarta-feira, 16 de dezembro de 2015 10:39
    quarta-feira, 16 de dezembro de 2015 09:24
    Moderador

Todas as Respostas

  • O teu Select esta errado, voce tem apenas 1 parametros no teu select, deveria ser 2 parametros. 

     WHERE Nomedo campo na tabela  = @parametroWhere And Nome do outro campo = @parametroCondicao

    Esta teu metodo deveria retornar uma tabela ou uma lista, seria a forma correcta de programar. Porque?

    por que voce esta a fazer uma procura na tabela que traz resultados entao deveria ser um metodo que retorna algo. So se usa metodos void quando nao se quer retornar nada. por exemplo

    Public void LimparTextbox()

    {

    textbox1.text ="";

    textbox2.text ="";

    }

    No teu caso seria:

    public DataTable getLikeConto(string parametroWhere, string parametroCondicao) //remove o teu datagridview


    Nao use este comando --SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);

    isto so se usaquando queromos fazer update na tabela...

    Troca Dataset pra Datatable... DataSet ds = new DataSet(); Porque?

    Porque Dataset e apenas usado quando se quer pesquizar mais de uma tabela. No teu caso

    tu apenas usas uma tabela...

    Tenta usar nomes no teu parametros dos campos que representam a condicao por exemplo

    string parametroWhere, string parametroCondicao, poderia ser

    string parametroUsusario, string parametroEmail. Porque? desta forma fica facil saber onde estas

    a errar. se voce usa nomes vulgares, nao teras ideias do que representa...


    A flower cannot blossom without sunshine, and man cannot live without love.

    • Marcado como Resposta Marcos SJ quarta-feira, 16 de dezembro de 2015 10:39
    quarta-feira, 16 de dezembro de 2015 09:24
    Moderador
  • Obrigado pelas dicas, vou ajustar o código
    quarta-feira, 16 de dezembro de 2015 19:34