Foros del Web » Programando para Internet » ASPX (.net) »

buscar datos en bd

Estas en el tema de buscar datos en bd en el foro de ASPX (.net) en Foros del Web. hola compañeros, pues como sabrán estoy creando la factura de un ERP, pues bien, tengo que en un textbox anotar el codigo de barra del ...
  #1 (permalink)  
Antiguo 09/07/2010, 12:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
buscar datos en bd

hola compañeros, pues como sabrán estoy creando la factura de un ERP, pues bien, tengo que en un textbox anotar el codigo de barra del producto y luego traer los datos de la bd al dataset, pues bien yo lo hago así:

Código ASP:
Ver original
  1. string codigo = TextBox1.Text;
  2.             DataSets.Factura ds = (DataSets.Factura)Cache["dataset"];
  3.  
  4.            
  5.  
  6.             SqlConnection conex = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FacturaConnectionString"].ConnectionString);
  7.             conex.Open();
  8.             SqlCommand coman = new SqlCommand("SELECT *FROM ARTICULOS WHERE CODIGO = '" + codigo + "'", conex);
  9.             SqlDataReader reader;
  10.             coman.ExecuteNonQuery();
  11.             reader = coman.ExecuteReader();
  12.             reader.Read();
  13.            
  14.             InsertaFactura((string)reader["CODIGO"],(string)reader["DETALL"], 2);
  15.             conex.Close();

mi duda es ¿Es esta la forma más optimizada de traer datos desde el servidor (bd)?, porque cada vez que se hace clic en un boton ejecuta este script, pero pensando puede haber otro metodo y así no estar abriendo y cerrando la bd cada vez que se hace clic me entiendo??.. es que tengo que hacer lo más optimizado posible..


gracias.
  #2 (permalink)  
Antiguo 09/07/2010, 19:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: buscar datos en bd

hola, pues que no hay nadie en este foro???? he estado escribiendo como 3 post y solo 1 persona me ha contestadp :O y los demas????...

gracias..
  #3 (permalink)  
Antiguo 10/07/2010, 08:49
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: buscar datos en bd

Bueno, mis recomendaciones basicas son:

1. Evita utilizar las instrucciones select dentro del propio código, pues eso te genera un gran hueco de seguridad. Usa un Procedimiento almacenado, asi evitas SQL INJECTIONS.

2. Utiliza with connection asi te evitas estar abriendo y cerrando la conexion.

3. Puedes declarar la variable conex de forma global de manera que no tengas q estar declarandola en cada instrucción.

4. Tambien puedes separar ese script en una funcion de tal manera que solo la llames y le envies los parametros. Ahorras mas codigo aun.

Por ultimo, nada mas comentar si has escrito varios post y no te han contestado, no es porque no quieran ayudarte sino porque no sabemos o bien no entendemos. Y antes de dar una respuesta totalmente equivocada es mejor no hacerlo.

Bueno, espero te sirvan mis consejos.

Saludos,
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #4 (permalink)  
Antiguo 10/07/2010, 09:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: buscar datos en bd

Hola, muchisimas gracias, tus consejos son muy buenos, y tienes razon si no me han contestado es porque quiza no saben, gracias, ah otra cosa es que habia pensado eso de declarar esa variable globalmente, pero el problema es que al insertar un nuevo registro o al realizar cualquier operacióin en el dataset tengo que reactualizar su contenido tanto en el dataset como en el gridview y eso lo hago así:

Código ASP:
Ver original
  1. DataSets.Factura ds = (DataSets.Factura)Cache["dataset"];
  2. GridView1.DataSource = ds;
  3. GridView1.DataBind();

entonces, en cada inserción, modificación, eliminación, selección y otros debo poner eso, porque si lo dejo global, simplemente no me actualiza el contenido, y si quito ambas y dejo solo el DataBind, se vacia el gridview...

gracias...

PD: discukpa soy un poco novato como se ocupa el with connections??

gracias.
  #5 (permalink)  
Antiguo 10/07/2010, 12:42
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: buscar datos en bd

Perdon se me enredo y no es with es using, pero de igual forma aca tienes unos buenos ejemplos
http://www.w3enterprises.com/articles/using.aspx
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #6 (permalink)  
Antiguo 10/07/2010, 17:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: buscar datos en bd

Cita:
Iniciado por jaullo Ver Mensaje
Bueno, mis recomendaciones basicas son:

1. Evita utilizar las instrucciones select dentro del propio código, pues eso te genera un gran hueco de seguridad. Usa un Procedimiento almacenado, asi evitas SQL INJECTIONS.

2. Utiliza with connection asi te evitas estar abriendo y cerrando la conexion.

3. Puedes declarar la variable conex de forma global de manera que no tengas q estar declarandola en cada instrucción.

4. Tambien puedes separar ese script en una funcion de tal manera que solo la llames y le envies los parametros. Ahorras mas codigo aun.

Por ultimo, nada mas comentar si has escrito varios post y no te han contestado, no es porque no quieran ayudarte sino porque no sabemos o bien no entendemos. Y antes de dar una respuesta totalmente equivocada es mejor no hacerlo.

Bueno, espero te sirvan mis consejos.

Saludos,

aqui esta las respuestas a cada una de ellas..:

1.- Ok buena idea lo veré más adelante..


2.- C# me da error al utilizar using, me sale subrayado con rojito.

3.- pues declaré la variable conex de manera global, pero cada vez que uno hace clic en 1 boton se reactualiza la página por eso tengo que estar volviendo a abrior la conexiíon y todo eso del DataBind().

4.- gracias..

saludis.,.

PD: porfavor, ustedes que ya son expertos y han desarrollados programas grandes en ASP.NEt, me podría decir porfavor ¿Como hago una factura insertando varios items de manera virtual y optimizada? se lo agradecería muchisimo porfavor, gracias..
  #7 (permalink)  
Antiguo 10/07/2010, 18:51
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: buscar datos en bd

Veremos un poco lo que pasa:

He revisado tu codigo y podria quedar asi

Código ASP:
Ver original
  1. DataSets.Factura ds = (DataSets.Factura)Cache["dataset"];
  2.  
  3.      
  4.      var conex = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["FacturaConnectionString"].ConnectionString);
  5.      conex.Open();
  6.  
  7.      SqlDataReader reader;
  8.      using (SqlCommand coman = new SqlCommand("SELECT *FROM ARTICULOS WHERE CODIGO = '" + TextBox1.Text + "'", conex))
  9.      {
  10.          coman.ExecuteNonQuery();
  11.          reader = coman.ExecuteReader();
  12.      }
  13.      reader.Read();
  14.  
  15.      InsertaFactura((string)reader["CODIGO"], (string)reader["DETALL"], 2);
  16.      conex.Close();

Con la variable global siempre tienes que abrir la conexion pero te evitas estar declarandola en cada procedimiento.
Con el databind tambien debes hacerlo, pero si lo sacas a un procedimiento parametrizado te evitas estas reescribiendolo.

En cuanto a la factura a que te refieres con virtual y optimizada?
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #8 (permalink)  
Antiguo 10/07/2010, 20:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 149
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: buscar datos en bd

hola muchisimas gracias amigo, mañana probare tu codigo gracias, no sabia como usar el using y eso que vi la pagina ejjeje, cuando me refiero a virtual quiere dcir de manera temporal, fuera de toda base de datos y en el cliente(no en el servidor ya que si hay varios usuarios a la vez es muy lento), y optimizada me referia a bien configurada por asi decirlo para que quede lo mejor posible para que asi no se relentice con varios usuarios trabajando simultaneamente..

gracias.!

Etiquetas: bd, aspx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:56.