Buscador sencillo en c#
Posted by Miguel Egea | Posted in C#, Relacional | Posted on 19-04-2010
1
En un post del grupo de noticias un compañero tenía una duda sobre como crear buscadores, de forma que la consulta SQL no fuese muy compleja de tratar y escribir, a la vez que no tenga problemas de inyección de código y que cumpla con sus requisitos. Yo me he permitido escribir el código todo en C#, aunque me hubiese gustado escribir un procedimiento almacenado, creo que de forma didactica esto va a quedar más claro.
Desde aquí puedes bajarte la aplicacion en zip.
Espero que disfruteis el post.
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;
using System.Configuration;
namespace Demo_Buscador
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection( ConfigurationManager.ConnectionStrings["AdventureWorks2008"].ConnectionString.ToString() ) ;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt=new DataTable();
SqlDataAdapter da = new SqlDataAdapter("select DISTINCT PERSON.PersonType From Person.Person",con);
da.Fill(dt);
TipoPersona.DataSource = dt;
TipoPersona.DisplayMember = "PersonType";
}
private void button1_Click(object sender, EventArgs e)
{
string SQL = "SELECT * FROM Person.Person ";
string where="";
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = con;
if (TipoPersona.Text != null && TipoPersona.Text!="")
{
TipoPersona.Text += " ";
da.SelectCommand.Parameters.Add("@PersonType",SqlDbType.NChar,2).Value=TipoPersona.Text.Substring(0,2);
where += " PersonType=@PersonType AND ";
}
if (Nombre.Text != "")
{
da.SelectCommand.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = Nombre.Text;
where += " LastName like @name AND ";
}
if (where != "")
SQL += " WHERE " + where.Substring(0, where.Length - 4);
da.SelectCommand.CommandText = SQL;
DataTable DT=new DataTable();
da.Fill(DT);
dataGridView1.DataSource = DT;
}
}
}

Gracias!!