2014-04-27 3 views
0

간단한 SQL 명령을 작성하고 최대 2 개의 매개 변수를 전달할 수있는 다음 함수를 작성했습니다. 추가 기능을 계속 만들고 추가 매개 변수를 추가 할 수는 있지만 매개 변수를 무제한으로 추가하는 간단한 방법이 있는지 궁금합니다. 감사합니다무제한 매개 변수를 전달할 수있는 함수를 확장하십시오.

''' <summary> 
''' Create a simple SqlCommand object with 2 parameters. Parameter Values always passed as a string 
''' </summary> 
''' <param name="cmdText"></param> 
''' <param name="Param1Name"></param> 
''' <param name="Param1Type"></param> 
''' <param name="Param1Value"></param> 
''' <param name="Param2Name"></param> 
''' <param name="Param2Type"></param> 
''' <param name="Param2Value"></param> 
''' <returns></returns> 
''' <remarks></remarks> 
Public Shared Function CreateSimpleSQLCommand(cmdText As String, Param1Name As String, Param1Type As ExpectedDataType, Param1Value As String _ 
              , Param2Name As String, Param2Type As ExpectedDataType, Param2Value As String) As SqlCommand 
    Dim SqlCommand As New SqlCommand(cmdText, OpenASqlConnection) 

    If Param1Name <> "" Then 
     If Param1Type = ExpectedDataType.Int Then 
      SqlCommand.Parameters.AddWithValue("@" & Param1Name, CInt(Param1Value)) 
     ElseIf Param1Type = ExpectedDataType.Dec Then 
      SqlCommand.Parameters.AddWithValue("@" & Param1Name, CDec(Param1Value)) 
     Else 
      SqlCommand.Parameters.AddWithValue("@" & Param1Name, Param1Value) 
     End If 
    End If 
    If Param2Name <> "" Then 
     If Param2Type = ExpectedDataType.Int Then 
      SqlCommand.Parameters.AddWithValue("@" & Param2Name, CInt(Param2Value)) 
     ElseIf Param2Type = ExpectedDataType.Dec Then 
      SqlCommand.Parameters.AddWithValue("@" & Param2Name, CDec(Param2Value)) 
     Else 
      SqlCommand.Parameters.AddWithValue("@" & Param2Name, Param2Value) 
     End If 
    End If 
    Return SqlCommand 
End Function 
+2

'ParamName','ParamType'과'ParamValue' 필드를 포함하는 Param이라는 클래스를 생성하고,이 Param 클래스의'List'를 함수에 넘깁니다. 기다려, 거기에 [SqlParam] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx)라는이 있습니다 –

+1

나는 당신의 제목을 편집했습니다. "[태그를해야 문제 포함"을 참조하시기 바랍니다 "그들의 제목에?] (http://meta.stackoverflow.com/questions/19190/)", 합의가 "아니오, 그들은 안"입니다. –

답변

2

당신은 제안 할과 하나의 매개 변수를 대표하거나 SqlParameter 유형을 사용하는 자신의 유형을 정의해야하고, 예를 들어 ParamArray, 같은 방법으로 단일 매개 변수를 선언

Public Sub ExecuteCommand(command As String, ParamArray parameters As SqlParameter()) 

그러면 인수 또는 개별 개체로서 SqlParameter 단일 SqlParameter 배열을 전달할 수있다. 가능한 한 여러 번 (예 : 0000) 전에 ParamArray이 발생합니다. String.Format 방법입니다.

관련 문제