Foros del Web » Programación para mayores de 30 ;) » .NET »

creando funciones para manejar bases de datos con C#

Estas en el tema de creando funciones para manejar bases de datos con C# en el foro de .NET en Foros del Web. hola ke tal soy nuevo en el foro... les hablo desde Peru =) kiza no este en el lugar correcto para esta duda, pido disculpas ...
  #1 (permalink)  
Antiguo 23/06/2011, 14:01
 
Fecha de Ingreso: junio-2011
Ubicación: Ica
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta creando funciones para manejar bases de datos con C#

hola ke tal
soy nuevo en el foro... les hablo desde Peru =)
kiza no este en el lugar correcto para esta duda, pido disculpas por esto...

tengo una duda enorme, muy grande... ya ke recien estoy empezando a programar "como se debe"...

estoy haciendo un pekeño proyecto en capas para una empresa de transportes interprovincial

he estado buscando, no se si sera la palabra adecuada aun ando un poco confuso con ciertos terminos, como "encapsular" ciertas funciones...
les doy un ejemplo de lo ke kiero hacer

normalmente se declara en la misma clase, combinandola con el diseño, al momento de un evento por ejemplo: Button_click()

Código:
cmd.CommandText = "INSERT INTO Nom_tabla VALUES (campo1, campo2, ... )";
obviamente ya se llamo al nuevo comando, etc etc

la idea es ke kiero hacer funciones como
Código:
public String insertar(Nom_tabla, camposN)
{
         "INSERT INTO"+ Nom_tabla +"VALUES ("+array[]+")";
}
asi donde iria el argumento "camposN" me imagino ke deberia ser un array ke contenga los campos por cada tabla...
disculpenme si me ekivoco... como dije al inicio tengo un mundo de dudas...
claro ke tambien manejare errores por si hay valores nulos o demas excepciones, pero keria mostrar lo principal...

lei ke esto se puede hacer con el Modelo Vista Controlador...
pero la mayoria de ejemplos ke encontre se fusiona codigo C# con la sintaxis SQL, cosa ke, creo yo, se deberia manejar en distinta forma... independientemente de cada formulario, de tabla y de cada query
asi se ahorraria escribir codigo y permitiria la reutilizacion de estos...

espero haber sido claro, tambien su pronta respuesta y doy gracias por anticipado a algun alma caritativa
GRACIAS!
  #2 (permalink)  
Antiguo 23/06/2011, 14:22
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: creando funciones para manejar bases de datos con C#

Hola compatriota juantanas_supay, lo que menciones sobre el parametro camposN podrias hacerlo de esta manera. En tu capa Entidades(si es que la manejas claro) puedes crearte una entidad por ejemplo usuarios :

Declaras sus atributos segun tu base de datos:
Código c#:
Ver original
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace PROYECTO
  7. {
  8.     public class E_USUARIO
  9.     {
  10.         public string id_usuario { get; set; }
  11.         public string nombres { get; set; }
  12.         public string ape_pat { get; set; }
  13.         public string ape_mat { get; set; }
  14.  
  15.  
  16.         public E_USUARIO()
  17.         {}
  18.  
  19.         public E_USUARIO(string usuar,string nom,string apepat,string apemat,)
  20.         {
  21.             this.id_usuario = usuar;
  22.             this.nombres = nom;
  23.             this.ape_pat = apepat;
  24.             this.ape_mat = apemat;
  25.         }  
  26.     }
  27. }

Y por ejemplo en tu evento button_click, lo puedes llamar asi :
Código c#:
Ver original
  1. E_USUARIO eusuario = new E_USUARIO();
  2. eusuario.id_usuario  = txtID.Text.trim();//"000000001"
  3. eusuario.nombres = txtNombres.Text.trim();//"Juan Carlos"
  4. eusuario.ape_pat = txtPaterno.Text.trim();//"Rojas"
  5. eusuario.ape_mat = txtMaterno.Text.trim();//"Cardoso"
  6.  
  7. //Y puedes llamar a tu funcion "insertar", le pasas la cadena tabla y luego la clase entidad de usuario
  8. insertar(txtTabla.Text.Trim(),eusuario);

Y tu metodo seria así :
Código c#:
Ver original
  1. public String insertar(string Nom_tabla, E_USUARIO usuario)
  2. {
  3.          "INSERT INTO "+ Nom_tabla +" VALUES ('"+usuario.id_usuario + "','" + usuario.nombres + "','"+ usuario.ape_pat + "','" + usuario.ape_mat +"')";
  4. }
Espero haberte ayudado en algo al menos con este ejemplo..... Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 23/06/2011 a las 14:29
  #3 (permalink)  
Antiguo 23/06/2011, 14:44
 
Fecha de Ingreso: junio-2011
Ubicación: Ica
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
De acuerdo creando funciones para manejar bases de datos con C#

hola
MUCHISIMAS GRACIAS!!
por tan pronta respuesta

y si me sirve, peeeeeeeero -cuando no el feisimo pero- se parece demasiado a los ejemplos ke he visto, donde se usa la capa Entidad...

como describia en mi consulta previa, no se puede hacer independientemente de la tabla? o de la entidad?
...me ekivoco?

en tu funcion
Código C#:
Ver original
  1. public String insertar(string Nom_tabla, E_USUARIO usuario)

ya estas pidiendo "usuario" del tipo "E_USUARIO"

a lo ke voy es ke podria ser una funcion ke funcione -valga la redundancia- con cualkier tipo de tabla, o es ke esa funcion va a funcionar con cualkier tipo de tabla o entidad?

GRACIAS DE NUEVO POR TU RESPUESTA...
pd. ya aprendi a poner el codigo del tipo C#
  #4 (permalink)  
Antiguo 23/06/2011, 14:54
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: creando funciones para manejar bases de datos con C#

Se puede siempre y cuando la clase entidad que definas sea generica para todas la tablas, que creo sea dificil o casi imposible que todas tengas la misma estructura(tipo de variable, cantidad de campos, pk....)
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 23/06/2011, 15:00
 
Fecha de Ingreso: junio-2011
Ubicación: Ica
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
Exclamación creando funciones para manejar bases de datos con C#

Cita:
que creo sea dificil o casi imposible que todas tengas la misma estructura (...)
ke yo sepa no es imposible... al menos se eso... ke en informatica todo se puede...
igual muchas GRACIAS
  #6 (permalink)  
Antiguo 23/06/2011, 15:04
Avatar de ldcd  
Fecha de Ingreso: enero-2010
Ubicación: Distrito Federal
Mensajes: 57
Antigüedad: 14 años, 3 meses
Puntos: 6
Respuesta: creando funciones para manejar bases de datos con C#

Pues yo en lo personal siempre he generado una clase por cada tabla como lo demuestran los ejemplos que has visto, ahora lo que se me viene a la mente es que tengas mas parametros en tus metodos para pasarle que tipo de tabla es, en un array pasar todos los parametros y hacer un foreach para agregar los parametros del array al cmd.

Pero se presentan mas complicaciones ya que necesitarias pasar tambien otro array en el mismo orden con el nombre que deben llevar las variables en la base de datos (E_USUARIO) y hacer un dato algo asi:

Código:
public void insertar(string Nom_tabla, List<string> nombreDatos, List<string> datos)
        {
            String cmd="INSERT INTO " + Nom_tabla + " VALUES ('" + datos[0] + "','" + datos[1] + "','" + datos[3] + "','" + datos[4] + "')";

        }
el List de nombreDatos, es por si quieres modificar o agregar dependiendo del campo o si vas a ejecutar un storeProcedure, ya que estos tienes que tener el nombre de las variables que le asignaste en la BD

Siento que t puedes ahorrar de esta maner un poco de tiempo, pero tambien creo q el mantenimiento y la logica pueden ser menos viables

Espero haberte ayudado
  #7 (permalink)  
Antiguo 23/06/2011, 15:10
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: creando funciones para manejar bases de datos con C#

Al menos que tengas tablas de esta índole :

Código CODE:
Ver original
  1. CREATE TABLE USUARIO(
  2. ID                     NVARCHAR(150),
  3. NOMBRE            NVARCHAR(150),
  4. PATERNO           NVARCHAR(150),
  5. MATERNO          NVARCHAR(150),
  6. EDAD                 NVARCHAR(150),
  7. DIRECCION       NVARCHAR(150),
  8. PRIMARY KEY(ID))
  9.  
  10. CREATE TABLE HABITACION(
  11. ID                      NVARCHAR(150),
  12. NUMERO            NVARCHAR(150),
  13. PISO                  NVARCHAR(150),
  14. TIPO                  NVARCHAR(150),
  15. COSTO              NVARCHAR(150),
  16. AFORO              NVARCHAR(150),
  17. PRIMARY KEY(ID))

COMO VES TIENEN EL MISMO TIPO DE VARIABLE, LA MISMA CANTIDAD DE CAMPO Y LA MISMA LONGITUD CON LO QUE ALLI SI PODRIAS GENERALIZAR PARA TU CONSULTA EN 1 SOLA ENTIDAD. ESPERO HABER SIDO CLARO. SALUDOS!.

PDT: esas tablas son ejemplos... para que veas como puedes generalizar para tu consulta.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #8 (permalink)  
Antiguo 23/06/2011, 15:17
 
Fecha de Ingreso: junio-2011
Ubicación: Ica
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
Pregunta creando funciones para manejar bases de datos con C#

muchas gracias por tu respuesta ldcd... tu ejemplo se acerca mas a lo ke busco

y claro ke el uso de un foreach seria viable para encontrar los campos

y a esta forma de separar el codigo SQL de C#, se le llama encapsular? abstraer?
o ke nombre tiene?
y de acuerdo a ese nombre, donde puedo buscar mucha mas informacion?

alguna vez encontre un codigo en PHP ke manejaba bases de datos... pero no la he vuelto a ver... por eso se ke se puede

y gracias por el consejo
pero la idea de la programacion es no repetir codigo y la reutilizacion?

otra vez: GRACIAS!!
  #9 (permalink)  
Antiguo 24/06/2011, 00:13
 
Fecha de Ingreso: junio-2011
Ubicación: Ica
Mensajes: 5
Antigüedad: 12 años, 10 meses
Puntos: 0
Sonrisa Respuesta: creando funciones para manejar bases de datos con C#

encontre un ejemplo para PHP ke es mas o menos lo ke kiero

como llamaria a esta clase, en un proyecto de la capa NEGOCIO o ENTIDAD por ejemplo, y a la funcion cuando tenga ke insertar los datos?


Código PHP:
Ver original
  1. <?php
  2. function mysql_insert($table, $inserts) {
  3.     $values = array_map('mysql_real_escape_string', array_values($inserts));
  4.     $keys = array_keys($inserts);
  5.        
  6.     return mysql_query('INSERT INTO `'.$table.'` (`'.implode('`,`', $keys).'`) VALUES (\''.implode('\',\'', $values).'\')');
  7. }
  8. ?>

Etiquetas: datosdb, encapsulacion, funciones, reutilizacion
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 22:46.