有没有办法减少这个ado.net代码?

时间:2013-03-26 18:44:15

标签: .net ado.net sqlparameters

我需要显着减少这段代码,有没有办法创建一个描述其方向的sql参数? 这是代码:

    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)

提前感谢。

3 个答案:

答案 0 :(得分: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 :(得分:1)

尝试:

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

答案 2 :(得分: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())