Usuário com melhor resposta
Busca por parametro definido pelo usuário numa textbox

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
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
Todas as Respostas
-
-
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, "%"));
-
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
-
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
-