13 de febrero de 2012

Buscador VS

  Buscador en Visual Basic sobre SQL

Hacer un buscador en Visual Basic es fácil por lo que para hacerlo algo interesante pero igualmente de fácil,  en vez de realizar la consulta en el propio formulario lo haré desde una clase, por lo demás es un sencillo ejemplo.

No crearé ninguna base de datos, usaré una existente, así que primero se hará la conexión a la base de datos llamada: imagenes, la cual tiene una tabla llamada: img con los campos que muestro en la imagen y en donde la búsqueda se hará tomando como criterio el id, el cual es un entero auto incrementable y clave primaria de la tabla


la conexión se hará desde el app.config de nuestro proyecto, la cadena de conexión la llamé conex, por lo que el contenido del app.config queda así para este ejemplo:

xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    configSections>
    <connectionStrings>
        <add name="conex" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=imagenes;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    connectionStrings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
    startup>
configuration>

Ahora se debe agregar una nueva clase en el proyecto con nombre ClaseBuscar.cs y tambien debemos importar la referencia System.Configuration 


desde la clase se realizara la consulta a la base de datos en busca de la información relacionada con el id que se recibe, se crea un Datatable y se devuelve este como resultado de la consulta, por lo que le pegamos el siguiente código

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Public Class ClaseBuscar
    Dim sql As String = ConfigurationManager.ConnectionStrings("conex").ConnectionString.ToString
    Dim dt As DataTable
    Dim cmd As SqlCommand
    Dim cnn As SqlConnection
    Dim da As SqlDataAdapter
    Public Function resultado(ByVal dato) As DataTable
        Using cnn = New SqlConnection(sql)
            Using cmd = New SqlCommand
                cnn.Open()
                cmd.Connection = cnn
                cmd.CommandText = "select * from img where id=@dato"
                cmd.Parameters.AddWithValue("@dato", dato)
                cmd.ExecuteNonQuery()
                Using da = New SqlDataAdapter(cmd)
                    dt = New DataTable
                    da.Fill(dt)
                    Return dt
                End Using
            End Using
        End Using
    End Function
End Class

Ahora el diseño del formulario de lo mas simple, con un textbox para ingresar el id que servirá de referencia en la búsqueda de datos(codigo) y otros tres textbox(nombre, comentario y ruta) para mostrar la información que se recupere, aquí el diseño con el código correspondiente



Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
    Dim dt As DataTable
    Dim b As New ClaseBuscar
    Private Sub BBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBuscar.Click
        dt = b.resultado(codigo.Text)
        If dt.Rows.Count > 0 Then
            nombre.Text = dt.Rows(0).Item("nombre").ToString
            comentarios.Text = dt.Rows(0).Item("comentarios").ToString
            ruta.Text = dt.Rows(0).Item("ruta").ToString
        Else
            MessageBox.Show("No hay resultados para la busqueda")
        End If
    End Sub
End Class




    Buscador en C# sobre SQL


Se debe crear un nuevo proyecto pero esta vez en lenguaje C#, pero se usara la misma conexión y el mismo diseño de formulario que el ejemplo anterior, por lo que deben seguirse los pasos anteriores utilizados arriba.

Una vez tengamos la conexión con los valores respectivos en el app.config del proyecto y se haya diseñado el formulario, se debe agregar una nueva clase a la cual igual que en el ejemplo anterior se llamara ClaseBuscar y se muestra el codigo que debe llevar



using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Data.SqlClient;
using System.Configuration;
public class ClaseBuscar
{
      string sql = ConfigurationManager.ConnectionStrings["conex"].ConnectionString;
      DataTable dt;
      SqlCommand cmd;
      SqlConnection cnn;
      SqlDataAdapter da;
      public DataTable resultado(dato)
      {
            using (cnn = new SqlConnection(sql)) {
                  using (cmd = new SqlCommand()) {
                        cnn.Open();
                        cmd.Connection = cnn;
                        cmd.CommandText = "select * from img where id=@dato";
                        cmd.Parameters.AddWithValue("@dato", dato);
                        cmd.ExecuteNonQuery();
                        using (da = new SqlDataAdapter(cmd)) {
                             dt = new DataTable();
                             da.Fill(dt);
                             return dt;
                        }
                  }
            }
      }
}





listo y ahora al formulario le pegamos el siguiente codigo:



using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Data.SqlClient;
using System.Windows.Forms;

public class Form1
{
    DataTable dt;
    ClaseBuscar b = new ClaseBuscar();
    private void BBuscar_Click(System.Object sender, System.EventArgs e)
    {
        dt = b.resultado(codigo.Text);
        if (dt.Rows.Count > 0)
        {
            nombre.Text = dt.Rows[0]["nombre"].ToString();
            comentarios.Text = dt.Rows[0]["comentarios"].ToString();
            ruta.Text = dt.Rows[0]["ruta"].ToString();
        }
        else
        {
            MessageBox.Show("No hay resultados para la busqueda");
        }
    }
}




eso es todo !