Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/03/2010, 08:06
merkslay
 
Fecha de Ingreso: noviembre-2006
Mensajes: 9
Antigüedad: 18 años
Puntos: 0
Respuesta: Ayuda crear un array sqlparameter vb net 2008

Cita:
Iniciado por Uialwen Ver Mensaje
Hola Merkslay:

No es que sea muy experta pero te voy a intentar ayudar :) Respecto a la primera parte:

Dim params As New SqlParameter --> Estás creando una variable de tipo SplParameter

Dim params = New SqlParameter() --> Igual pero es un array

Y para la segunda parte te voy a poner un ejemplo de código,ok?

Esta es la capa de negocios con el procedimiento para insertar:

Private _objDatos As CapaDatos.DataAccess

Public Sub Insertar (ByVal Tabla as String,byVal p1 as Integer, ..p2, p3)


Dim arrParams() As SqlParameter= { _
me._objDatos.CreateParameter("@Tabla", SqlDbType.NVarChar, Tabla), _
me._objDatos.CreateParameter("@p1", SqlDbType.Int, p1),......}

dt = SelectSP(strSelect, arrParams)



End Sub

----------------------------------------------------

Y esta es la capa de acceso a datos, con la función para ejecutar el Sp y otra para crear los parámetros:

Namespace CapaDatos

Public Class DataAccess


Private _conn As SqlConnection

''' <summary>
''' Ejecuta un procedimiento almacenado de acción con parámetros.
''' </summary>
''' <param name="SPName">Nombre del procedimiento almacenado.</param>
''' <param name="Parameters">Array que contiene los parámetros del SP.</param>
Public Function ExecuteSP( _
ByVal SPName As String, _
ByVal Parameters() As SqlParameter) _
As Integer

Dim cmdCommand As New SqlCommand
Dim intFilasAfectadas As Integer

Try
With cmdCommand
.Connection = Me._conn
.CommandType = CommandType.StoredProcedure
.CommandText = SPName
With .Parameters
.AddRange(Parameters)
End With
End With

If Me._conn.State <> ConnectionState.Open Then
Me._conn.Open()
End If

intFilasAfectadas = cmdCommand.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception("No se pudo ejecutar el comando: " & ex.Message)
'Throw New Exception(String.Format("{No se pudo ejecutar el comando. {0}:{1}", ex.InnerException.ToString, ex.Message))
Finally
Me._conn.Close()
End Try

Return intFilasAfectadas

End Function

Public Function CreateParameter( _
ByVal ParamName As String, _
ByVal SqlDbType As System.Data.SqlDbType, _
ByVal Value As Object) _
As System.Data.SqlClient.SqlParameter

Dim p As New System.Data.SqlClient.SqlParameter
With p
.ParameterName = ParamName
.SqlDbType = SqlDbType
.Value = Value
End With

Return p

End Function


A ver si te sirve de ayuda :)

PD:está en vb2005 pero será igual en 2008



Hola gracias por la respuesta pero me podrias decir si se puede hacer esto??..

en ves de llenar asii declarando el tipo de variable por variable para cada parametro que contendra el array arrParams()
...
Dim arrParams() As SqlParameter= { _
me._objDatos.CreateParameter("@Tabla", SqlDbType.NVarChar, Tabla), _
me._objDatos.CreateParameter("@p1", SqlDbType.Int, p1),......}


se podria hacer llenarlo de frente sin declarar el tipo de parametro?? asi como pasarlo como una array de tipo string? .. ejemplo..

Dim arrParams() As SqlParameter= {p1,p2,p3,p4,p5,p6,...p10}

lo que quiero en sii es pasar todos los parametros de un array de tipo string a una array de tipo sqlparameter con un for o con un foreach..
algo asi

Dim array() As string= {p1,p2,p3,p4,p5,p6,...p10}
Dim arrParams() As SqlParameter

//sorry por el codigo lo que quiero dara entender es la idea si se puede hacer esto pero sin declarar cada valor sqlparameter del arrayparams()... porque se me hace hace laborioso estar declarando una por una y manejo aveces mas de 30 parametros y eso si me hace perder mucho tiempo .... o necesariamente tengo que declarar una por una =(? porfaa ayudenme.....
for i=0;i<=array().lenghts-1;i++

arraParams(i).value=array(i).value

end for

con un buclee que me llene todos los valores que contiene el array() tipo string al arrayParams() de tipo SqlParameter..... ya sea con un for o foreach..

Espero su grandes respuestas ... a todos muchas gracias