Buscador sencillo en c#

Posted by Miguel Egea | Posted in C#, Relacional | Posted on 19-04-2010

0

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;

        }
    }
}

Write a comment