2015-12-16 3 views
-1

Я только пытаюсь искать. Регистрация, переданная пользователем как параметр, но ничего не возвращает или не заполняет DataGridView.Адаптер данных с предложением SELECT и WHERE

Что я могу делать неправильно?

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(); 
} 

Где вызов метода передается параметры

private void btnPesquisar_Click(object sender, EventArgs e) 
{ 
    Classes.Contas conta = new Classes.Contas(); 
    switch (cboFiltro.SelectedIndex) 
    { 
     case 0: 
      conta.getLikeConta("nome", txtBusca.Text, gridConsultaUsuario); 
      configuraDataGridView(); 
      //gridConsultaUsuario.DataSource = conta.getContas("nome", txtBusca.Text).Tables[0]; 
      break; 

     case 1: 
      conta.getLikeConta(txtBusca.Text, "usuario", gridConsultaUsuario); 
      //gridConsultaUsuario.DataSource = conta.getContas("usuario", txtBusca.Text).Tables[0]; 
      break; 

     case 2: 
      conta.getLikeConta(txtBusca.Text, "setor", gridConsultaUsuario); 
      break; 
     case 3: 
      conta.getLikeConta(txtBusca.Text, "cargo", gridConsultaUsuario); 
      break; 
     default: 
      break; 

    } 

} 
+0

Что будет ожидать 'где условие'? –

ответ

1

Проблема заключается в том, что вы можете использовать имя поля в качестве параметра, вы должны написать имя поля в запросе, как это:

Вы можете попробовать выполнить это на SQL Server, первый запрос будет работать, но принесет 0 строк, но второй запрос будет иметь данные.

declare @parametroWhere nvarchar(max), @parametroCondicao nvarchar(max) 
set @parametroWhere=N'nome' 
set @parametroCondicao=N'some value that exist in db' 
--first query 
SELECT nome,usuario,email,administrador FROM GSCUsuarios WHERE @parametroWhere = @parametroCondicao 

--second query 
SELECT nome,usuario,email,administrador FROM GSCUsuarios WHERE nome = @parametroCondicao 
+0

Исправлено спасибо за sugestion, но все равно ничего не возвращаю или нет, это заполнение DataGridView –

+0

Есть ли у вас данные в базе? (вокальный dados no banco de dados)? Что такое переменная parametroWhere и parametroCondicao? –

+0

Да, я выполнил запрос, и он вернул меня, который вы искали, отредактировал проблему с вызовом метода getLikeConta –

Смежные вопросы