如何在vb.net中声明方法返回值

时间:2013-02-18 10:58:11

标签: vb.net methods return return-value

我创建了一个名为Cls_ICCID的类,我在Update_Status中声明了一个返回byRef变量的方法。


Cls_ICCID

Public Sub Update_Status(**ByRef massege As String**, ByVal ICCID_No As Integer, ByVal status As Integer)
        Try
            Dim cmd As SqlCommand
            Dim sql As String
            Dim myConnection As SqlConnection = New SqlConnection()
            myConnection.ConnectionString = "Data Source=TEHRANI\TEHRANI;Initial Catalog=GSMProduction;Persist Security Info=True;User ID=sa;Password=1"
            sql = "UPDATE Tbl_ICCID SET Status=status WHERE ICCID=ICCIDNo"
            myConnection = New SqlConnection(sql)
            myConnection.Open()
            cmd = New SqlCommand(sql, myConnection)
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            myConnection.Close()
            massege = "SeccessFully"
        Catch ex As Exception
            massege = "server Error"
        End Try
    End Sub

然后在文本框更改事件触发时执行该方法:

 Private Sub Txt_ICCID_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_ICCID.TextChanged
     Dim clsICCID As Cls_ICCID
     clsICCID.Update_Status(lblError.Text, Txt_ICCID.Text, 1)
 End Sub

但这给了我一个例外:

  

算术运算导致溢出。   enter image description here   我做错了什么?

4 个答案:

答案 0 :(得分:1)

说实话,正如konrad所说,如果你想使用这种代码,你应该真的在基础知识上工作。

没有尝试过代码,但我认为你想要像

这样的东西
Public Function Update_Status(iccidNo As Integer, status As Integer) As String
    Const sql As String = "UPDATE Tbl_ICCID SET Status=@status WHERE ICCID=@ICCIDNo"
    Const connstr As String = "Data Source=TEHRANI\TEHRANI;Initial Catalog=GSMProduction;Persist Security Info=True;User ID=sa;Password=1"
    Try
        Using myConnection = New SqlConnection()
            myConnection.ConnectionString = connstr
            Using cmd = New SqlCommand(sql, myConnection)
                cmd.Parameters.AddWithValue("@status", status)
                cmd.Parameters.AddWithValue("@ICCIDNo", iccidNo)
                cmd.ExecuteNonQuery()
                Update_Status = "Successfully"
            End Using
        End Using
    Catch ex As SqlException
        Update_Status = "server Error"
    Catch ex As Exception
        Update_Status = "server Error"
    End Try
End Function

但我个人不会那样处理异常并返回一个布尔值。

答案 1 :(得分:1)

你明确要求的是在方法中返回值。您必须将Sub声明为Function,然后使用return返回值,而不是Public Function Update_Status(ICCID_No As Integer, status As Integer) As String '... return massege End Function

lblError.Text = clsICCID.Update_Status(Txt_ICCID.Text, 1)

然后抓住价值:

{{1}}

答案 2 :(得分:0)

我应该使用Function而不是sub方法。因为sub方法无效。

答案 3 :(得分:0)

对于返回值的方法,您需要将方法声明为函数,而不是sub。 例如:

Public Function Update_Status(ByVal ICCID_No As Integer, ByVal status As Integer) As String
    Return "errorMessage"
End Function

然后可以像这样调用它:

returnValue = Update_Status(Txt_ICCID.Text, 1)

请参阅:http://msdn.microsoft.com/en-us/library/sect4ck6%28v=vs.80%29.aspx

但似乎您的参数可能也不匹配:将字符串作为整数发送?