2013-03-26 69 views
1

我需要大大減少這段代碼,有沒有什麼辦法可以創建一個描述其方向的sql參數? 這裏是代碼:有什麼辦法可以減少這個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) 

在此先感謝。

+2

我看到3臺4個幾乎相同的代碼行。創建一個方法並傳入參數,以便可以改變。 – 2013-03-26 18:49:09

回答

1

有一個overload of the constructor that includes the direction,但你必須指定很多其他參數,所以代碼畢竟不會太短。

您可以擴展方法:

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 

現在你可以使用的參數:

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

對於每一個參數,你可以使用

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

嘗試:

command.Parameters.Add(new SqlParameter("@ROJO", SqlDbType.Int) With {.Direction = ParameterDirection.Output}); 
相關問題