2013-03-26 1 views
1

J'ai besoin de réduire significativement ce code, est-il possible de créer un paramètre sql décrivant sa direction? Voici le code:Y at-il un moyen de réduire ce code ado.net?

Dim Oparam1 As SqlParameter = New SqlParameter("@ROJO", SqlDbType.Int) 
    Dim Oparam2 As SqlParameter = New SqlParameter("@AMBAR", SqlDbType.Int) 
    Dim Oparam3 As SqlParameter = New SqlParameter("@AMARILLO", SqlDbType.Int) 
    Dim Oparam4 As SqlParameter = New SqlParameter("@VERDE", SqlDbType.Int) 
    Oparam1.Direction = ParameterDirection.Output 
    Oparam2.Direction = ParameterDirection.Output 
    Oparam3.Direction = ParameterDirection.Output 
    Oparam4.Direction = ParameterDirection.Output 
    command.Parameters.Add(Oparam1) 
    command.Parameters.Add(Oparam2) 
    command.Parameters.Add(Oparam3) 
    command.Parameters.Add(Oparam4) 

merci à l'avance.

+2

Je vois 3 séries de 4 lignes de code presque identiques. Créer une méthode et passer des paramètres pour ce qui peut varier. –

Répondre

1

Il y a un overload of the constructor that includes the direction, mais vous avez spécifier beaucoup d'autres paramètres, donc le code ne sera pas plus court après tout.

Vous pouvez faire une méthode d'extension:

Imports System.Runtime.CompilerServices 

Module SqlExtensions 

    <Extension()> 
    Public Function SetOutput(parameter As SqlParameter) As SqlParameter 
    parameter.Direction = ParameterDirection.Output 
    Return parameter 
    End Function 

End Module 

Maintenant, vous pouvez utiliser sur les paramètres:

command.Parameters.Add(New SqlParameter("@ROJO", SqlDbType.Int).SetOutput()) 
command.Parameters.Add(New SqlParameter("@AMBAR", SqlDbType.Int).SetOutput()) 
command.Parameters.Add(New SqlParameter("@AMARILLO", SqlDbType.Int).SetOutput()) 
command.Parameters.Add(New SqlParameter("@VERDE", SqlDbType.Int).SetOutput()) 
2

Pour chaque paramètre, vous pouvez utiliser

C#

command.Parameters.Add(new SqlParameter("@name", SqlDbType.Int) 
    {Direction = ParameterDirection.Output}); 

VB.NET

command.Parameters.Add(New SqlParameter("@name", SqlDbType.Int) With { _ 
    .Direction = ParameterDirection.Output _ 
}) 
1

Essayez:

command.Parameters.Add(new SqlParameter("@ROJO", SqlDbType.Int) With {.Direction = ParameterDirection.Output}); 
Questions connexes