none
Busca por parametro definido pelo usuário numa textbox RRS feed

  • Pergunta

  • Boa noite, alguns dias atrás eu estava com  um problema de conexão, consegui resolver graças ao forúm, agora o problema está no parametro de busca, quando o usuário insere um parametro na text box, e clica em pesquisar, a aplicação retorna é necessário declarar a variável escalar busca. Segue abaixo o código:

    Aqui o código da aplicação:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;

    namespace Catalogo_Velas
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                string StrConex = @"Data Source = EDVAINER-HP\MSSQLSERVER; Integrated Security = true; Initial Catalog = velasNGK";
                string query = @"SELECT * FROM velas WHERE veiculo LIKE '%' + @Busca + '%'";   <---aqui está o erro, não sei bem se é assim que devo especificar a busca.
                SqlConnection conex = null;
                bool erro = false;
                conex = new SqlConnection(StrConex);
                try
                {
                    //cria um objeto DataAdapter
                    SqlDataAdapter DA = new SqlDataAdapter();
                    DA.SelectCommand = new SqlCommand(query, conex);
                    //cria e preenche um objeto DataSet();
                    DataSet DS = new DataSet();
                    DA.Fill(DS, "velas");
                    dataGridView1.DataSource = DS.Tables["Prod"];
                }
                catch (Exception ex)
                {
                    erro = true;
                    MessageBox.Show(ex.Message, "Banco de Dados");
                }
                finally
                {
                    if (erro == true)
                        button1.Enabled = false;
                }
            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {

            }
        }
    }


    Edvainer Reis 3º Período em Sistemas para Internet - UNILAGO - São José do Rio Preto

    sexta-feira, 10 de maio de 2013 21:45

Respostas

  • A primeira parte da mudança já está mencionada no segundo exemplo.

    Agora você que fazer esse filtro no select, correto? Mas de onde virá o valor desse filtro? De um TextBox, de um combo, de uma QueryString?

    No caso, você passará o valor do componente desejado no lugar da variável ValorParaBusca que coloquei no exemplo:

    DA.SelectCommand.Parameters.AddWithValue("@Busca", string.Concat("%", textbox1.Text, "%"));


    Boa sorte com o aprendizado, precisando estamos aí.

    • Marcado como Resposta Giovani Cr quarta-feira, 9 de outubro de 2013 18:21
    segunda-feira, 13 de maio de 2013 16:36

Todas as Respostas

  • Deleted
    sexta-feira, 10 de maio de 2013 22:03
  • Edvainer,

    Você está informando o @Busca, como sendo um parâmetro para a query, porém, no seu fonte, em nenhum momento você preenche esse parâmetro antes de chamar a consulta. 

    Exemplo:

    DA.SelectCommand.Parameters.AddWithValue("@Busca", ValorParaBusca);

    Outra questão que mudaria é a forma como monta o like desse parâmetro, conforme exemplo:

    string query = @"SELECT * FROM velas WHERE veiculo LIKE @Busca";
    
    ...
    
    DA.SelectCommand.Parameters.AddWithValue("@Busca", string.Concat("%", ValorParaBusca, "%"));


    sábado, 11 de maio de 2013 05:57
  • Por isso que quando eu compilo a aplicação ela retorna :"è necessário declarar a variável escalar @Busca"? Como ficaria meu código com essas mudanças sugeridas por vc? Desde já agradeço a compreensão, peço a ajuda pois estou estudando c# sozinho, com base nos fundamentos de C++, estou utilizando um livro para acompanhar. Espero que possa me ajudar.

    Edvainer Reis 3º Período em Sistemas para Internet - UNILAGO - São José do Rio Preto

    segunda-feira, 13 de maio de 2013 14:52
  • A primeira parte da mudança já está mencionada no segundo exemplo.

    Agora você que fazer esse filtro no select, correto? Mas de onde virá o valor desse filtro? De um TextBox, de um combo, de uma QueryString?

    No caso, você passará o valor do componente desejado no lugar da variável ValorParaBusca que coloquei no exemplo:

    DA.SelectCommand.Parameters.AddWithValue("@Busca", string.Concat("%", textbox1.Text, "%"));


    Boa sorte com o aprendizado, precisando estamos aí.

    • Marcado como Resposta Giovani Cr quarta-feira, 9 de outubro de 2013 18:21
    segunda-feira, 13 de maio de 2013 16:36
  • Ok Diego, muito obrigado, vou testar hj na faculdade e qualquer coisa eu te retorno!

    Edvainer Reis 3º Período em Sistemas para Internet - UNILAGO - São José do Rio Preto

    segunda-feira, 13 de maio de 2013 18:48