Usuário com melhor resposta
Data Adapter com SELECT e cláusula WHERE

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(); }
- Editado Gabriel Bernardone quarta-feira, 16 de dezembro de 2015 03:22
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
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
-