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

Procedimiento Almacena en Programacion en Capas .NET

Estas en el tema de Procedimiento Almacena en Programacion en Capas .NET en el foro de .NET en Foros del Web. Estimados, junto con saludarles desearia saber como se programa en capas si kiero ingresar algo mediante un procedimiento almacenado. Miren aca esta la funcion que ...
  #1 (permalink)  
Antiguo 14/12/2009, 07:20
 
Fecha de Ingreso: octubre-2009
Mensajes: 63
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Procedimiento Almacena en Programacion en Capas .NET

Estimados, junto con saludarles desearia saber como se programa en capas si kiero ingresar algo mediante un procedimiento almacenado.
Miren aca esta la funcion que estoy haciendo

.............................. VB.NET .................................................. .......

Public Function CambiarContraseña(ByVal rut As String) As ArrayList
'Crear un ArrayList
Dim cambioContraseña As ArrayList = New ArrayList
'Parámetros de conexión
Me.configurarConexion2()
cnn.setNombreTabla("Tracking_Usuario")
cnn.setCadenaSQL("Select * from " & cnn.getNombreTabla() & " Where rut = '" & rut & "'")
cnn.setEsSelect(True)
cnn.conectar()
'Si es que existe registro, llenar el ArrayList con los datos
For Each dr As System.Data.DataRow In cnn.getDbDataSet().Tables(cnn.getNombreTabla()).Ro ws
Dim usuarios As New CAPA_DATOS.Tracking_Usuario
usuarios._rut = CStr(dr("RUT"))
usuarios._estado = CStr(dr("ESTADO"))
usuarios._password = CStr(dr("PASSWORD"))
usuarios._fecha = CDate(dr("FECHAHORA"))
usuarios._ip = CStr(dr("IP"))
usuarios._mac = CStr(dr("MAC"))

'Agregar los datos a la colección
cambioContraseña.Add(usuarios)
Next
Return cambioContraseña
End Function

................................... SP SQLSERVER 2000 .............................................

CREATE PROCEDURE [SP_MULTIUSUARIO_GRAMOD_TRACKING_USUARIO]
@RUT AS VARCHAR(13)
,@ESTADO AS VARCHAR(5)
,@PASSWORD AS VARCHAR(10)
,@IP AS VARCHAR(20)
,@MAC AS VARCHAR(30)

AS

IF NOT EXISTS (Select * From TRACKING_USUARIO Where rut = @RUT)

BEGIN

INSERT INTO TRACKING_USUARIO
(RUT
,ESTADO
,PASSWORD
,FECHAHORA
,IP
,MAC)

VALUES
(@RUT
,@ESTADO
,@PASSWORD
,GETDATE()
,@IP
,@MAC)

END
ELSE

BEGIN

UPDATE TRACKING_USUARIO

SET ESTADO = @ESTADO
,PASSWORD = @PASSWORD
,FECHAHORA = GETDATE()
,IP = @IP
,MAC = @MAC

WHERE (RUT = @RUT)

END
GO


En donde esta marcado con negritha y mas grande va la sentencia sql donde deberia ir el SP, pero los parametros donde van o donde va el SP

Saludos
  #2 (permalink)  
Antiguo 14/12/2009, 08:19
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Procedimiento Almacena en Programacion en Capas .NET

Los parámetros se asignan mediante la propiedad Parameters de la clase SqlCommand

Algo así:
Código vb.net:
Ver original
  1. Dim cmd As New SqlCommand("MiProcedimientoAlmacenado",conexion)
  2. cmd.Parameters.Add("@Parametro1",SqlDbType.Varchar, 40).value = valor_parametro1
  3. cmd.Parameters.Add("@Parametro2",SqlDbType.Int).value = valor_parametro2
  4. 'etc

Saludos.
__________________
Eduardo Peredo
Wigoin
  #3 (permalink)  
Antiguo 14/12/2009, 09:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 63
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Procedimiento Almacena en Programacion en Capas .NET

Gracias, esta bueno saberlo...
Pero dentro de esta sintaxix como iria

Public Function CambiarContraseña(ByVal rut As String) As ArrayList
'Crear un ArrayList
Dim cambioContraseña As ArrayList = New ArrayList
'Parámetros de conexión
Me.configurarConexion2()
cnn.setNombreTabla("Tracking_Usuario")
cnn.setCadenaSQL("Select * from " & cnn.getNombreTabla() & " Where rut = '" & rut & "'")
cnn.setEsSelect(True)
cnn.conectar()


YO LE PASO LA SENTENCIA EN LA CONEXIONSQL Y AHY SUPUESTAMENTE DEBERIA IR EL LLAMADO AL SP O NO?
  #4 (permalink)  
Antiguo 14/12/2009, 11:28
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Procedimiento Almacena en Programacion en Capas .NET

Claro acá debes de poner el procedimiento almacenado. Pero la forma correcta de configurar los parámetros es como te mostré arriba. En todo caso podrías hacerlo de esta forma, aunque no es lo mejor:
Código vb.net:
Ver original
  1. cnn.setCadenaSQL("EXEC MI_PROCEDIMIENTO_ALMACENADO "+ valor + ")

Saludos.
__________________
Eduardo Peredo
Wigoin
  #5 (permalink)  
Antiguo 17/12/2009, 15:51
 
Fecha de Ingreso: octubre-2009
Mensajes: 63
Antigüedad: 14 años, 6 meses
Puntos: 0
De acuerdo Respuesta: Procedimiento Almacena en Programacion en Capas .NET

Cita:
Iniciado por eperedo Ver Mensaje
Claro acá debes de poner el procedimiento almacenado. Pero la forma correcta de configurar los parámetros es como te mostré arriba. En todo caso podrías hacerlo de esta forma, aunque no es lo mejor:
Código vb.net:
Ver original
  1. cnn.setCadenaSQL("EXEC MI_PROCEDIMIENTO_ALMACENADO "+ valor + ")

Saludos.
Estimado:

ingrese esto

cnn.setCadenaSQL("SP_MULTIUSUARIO_GRAMOD_TRACKING_ USUARIO " + rut + , + estado + , + password + )

y me marca la , (no se qcual es el conector para separar los parametros)

Cual es la sintaxis?


Saludos
  #6 (permalink)  
Antiguo 17/12/2009, 15:53
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Procedimiento Almacena en Programacion en Capas .NET

De la forma que estás mandando los parámetros es una simple concatenación por lo tanto debes de poner la coma (,) entre comillas:
Código vb.net:
Ver original
  1. cnn.setCadenaSQL("SP_MULTIUSUARIO_GRAMOD_TRACKING_ USUARIO " + rut + "," + estado + "," + password)

Saludos.
__________________
Eduardo Peredo
Wigoin
  #7 (permalink)  
Antiguo 17/12/2009, 17:52
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Procedimiento Almacena en Programacion en Capas .NET

Si me permiten agregar algo acerca de la programacion en capas.. y es que programar en capas, mas que una sintaxis, es una forma de hacer las cosas.
me explico. Cuando un analista se enfrenta al desarrollo en capas (2, 3 o las que sean) debe estar enfocado en separar los tipos de codigos (por decirlo de una manera). Esto se refiere por ejemplo, a que si decido qu emi aplicacoin sera 3 capas, yo debo ser capaz de crear una capa de presentacion, una capa de negocios, y una de acceso a datos. vale decir, el codigo que tenga que usar para manejar controles de mi formulario (winform, webform) debe estar encerrado en una clase (por lo general el mismo form), que el codigo que implique poner reglas de negocio a mi aplicacion (ejemplo agregar impuestos, calcular tasas de interes, etc) debe estar en una clase distinta, y quepor ultimo, todas los accesos a los datos en la BD esten igualmente en una clase distinta.
que se consigue con esto, que si el dia de mañana, tengo que modificar la apariencia de mi form, o tengo que agregar otra funcionalidad, o peor aun, me cambio de gestor de base de datos, con la tecnica de programacion en capas, no tengo que cambiar todo mi codigo, solo la capa que sea necesaria.
programar en capas, en resulem, es una forma ordenada de hacer las cosas

eso era mi aporte, ojala puedan comentar para aumentar el conocimiento.
salu2
PLCH
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
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 16:57.