Como buscar en una base de datos Oracle con Visual c# y Asp.Net.



En fin, les dejo un script para visual c# con asp.net para que puedan integrar si les sirve es sus paginas webs. Este scripts funciona mediante un textbox.text en el cual escribimos un string (texto), este texto lo guardamos en una variable y luego con una select de oracle hacemos la busqueda del texto escrito. Esta bien por que creo que solo hay un post perdido por ahi de un foro de oracle que explica por arriba como hacerlo pero aqui lo voy a poner paso a paso:

1-Creamos un documento nuevo en nuestro entorno de Visual Studio 2008 y arrastramos desde la barra desplegable de la derecha un listbox , un textbox y un button, luego lo configuramos para que nos quede como la imagen de arriba.

2-Hacemos doble click en uno de los listbox1 para que el visual studio 2008 nos cree un archivo con el nombre de nuestro proyecto y con la extension .aspx.cs, dentro de el copiamos el siguiente contenido:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Oracle.DataAccess.Client; //ESTAS SON LIBRERIAS DEL ODP DE ORACLE.
using Oracle.DataAccess.Types; //ESTAS SON LIBRERIAS DEL ODP DE ORACLE.

namespace proyecto_vm
{
public partial class WebForm4 : System.Web.UI.Page
{


protected void Page_Load(object sender, EventArgs e)
{
listBox1.Visible = false;
string oradb = "Data Source=ORCL;User Id=usuario;Password=usuario;";
OracleConnection conn = new OracleConnection(oradb);
conn.Open();

OracleParameter parm = new OracleParameter();
parm.OracleDbType = OracleDbType.Decimal;

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.Parameters.Add(parm);
cmd.CommandText = "AQUI PONEMOS LA SELECT QUE QUIERAMOS MOSTRAR EN EL LISTBOX";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();

OracleDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
listBox2.Items.Add(" " + dr.GetString(0)
+ " " + dr.GetString(1));
//listBox2.Attributes.Add("onchange", "get_list_select_text(this)");

}
}

protected void Button1_Click(object sender, EventArgs e)
{
string oradb = "Data Source=ORCL;User Id=usuario;Password=usuario;";
OracleConnection conn = new OracleConnection(oradb); // C#
conn.Open();

OracleParameter parm = new OracleParameter();
parm.OracleDbType = OracleDbType.Decimal;
parm.Value = TextBox1.Text; //aqui definimos que lo que pongamos en el textbox se parametrize y se inserte en la query de oracle.

OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.Parameters.Add(parm);
cmd.CommandText = "SELECT DE LA TABLA FROM TABLA WHERE COLUMNA LIKE '%" + TextBox1.Text + "%'";
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
listBox2.Visible = false;
listBox1.Visible = true;
listBox1.Items.Add(" " + dr.GetString(0)
+ " " + dr.GetString(1));
// listBox1.Attributes.Add("onchange", "get_list_select_text(this)");

}
}
}
}


Explicacion: En el aspx tenemos un javascript que cambia los caracteres que escribimos en el textbox en minusculas y lo pasa automaticamente a mayusculas por si los campos de la base de datos estan en mayusculas.

Espero que les sirva
Share on Google Plus
    Blogger Comment

2 comentarios:

gavp dijo...

He seguido los pasos indicados del ejemplo.
Tengo el problema siguiente:

The name "listBox" does not exist in the current context

Cómo se corrige?

gavp dijo...

Ya corregí el tema.
Al copiar el código, por algún motivo no relaciona el nombre del campo (listbox1) con el campo.

Escribí el código eligiendo desde el menu contextual los campos referenciados y ningún problema