0

私はvb.netを使用しています

クラス(class1)ファイル、つまりsaveに関数があります。この保存関数には 3 つの引数があります。現在、次のアプローチを使用して引数を送信しています。

Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
        dim p as new class1
        p.save(txtempid.text,txtempname.text,txtage.text)
        messagebox.show("Successfully Saved")
End sub

クラス1:

imports system.data.sqlclient
imports system.configuration
public class class1
    Dim constr As String
    Dim con As SqlConnection
    Dim cmd As SqlCommand

public function save(byval s as string,byval s1 as string,byval s2 as string)
    constr = ConfigurationManager.AppSettings("con")
    con = New SqlConnection(constr)
    con.Open()
    cmd=new sqlcommand("Emp_insert",con)
    cmd.commandtype=commandtype.storedprocedure
    cmd.Parameters.Add("@EmployeeID", SqlDbType.BigInt).Value = s
    cmd.Parameters.Add("@EmployeeName", SqlDbType.VarChar).Value = s1
    cmd.Parameters.Add("@Age", SqlDbType.BigInt).Value = s2
    cmd.executenonquery()
    cmd.dispose()
    con.close()
   return 0
End function
End Class

大丈夫ですが、引数の数が増えると大変です。誰かが私にもっと良い方法を提案できますか?

4

1 に答える 1

1

変形

public function save(parameters as Dictionary(Of string, object)) as int
for each item as KeyvaluePair(Of string, object) in parameters
cmd.Parameters.AddWithValue("@" & item.Key, item.Value)
next
return cmd.ExecuteNonQuery()
end function

タプルが使える

public sub DoSomething(Tuple (Of string, string, integer) myparameter)
dim firstItem as string = myparameter.Item1 
dim secondItem as string = myparameter.Item2
dim thirdItem as integer = myparameter.Item3
end sub

sub main()
Dim tuple as New Tuple(Of string, string, integer)("First","Second", 100)
DoSomething(tuple)
end sub
于 2012-07-24T04:47:23.563 に答える