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

如何在vb.net中声明方法返回值,vb.net,methods,return,return-value,Vb.net,Methods,Return,Return Value,我创建了一个名为Cls_ICCID的类,我在其中声明了处于Update_状态的方法,该方法返回一个byRef变量 Cls_ICCID 公共子更新_状态**ByRef massege为字符串**,ByVal ICCID_No为整数,ByVal状态为整数 尝试 Dim cmd作为SqlCommand 将sql设置为字符串 Dim myConnection As SqlConnection=新建SqlConnection myConnection.ConnectionString=数据源=TEHRAN

我创建了一个名为Cls_ICCID的类,我在其中声明了处于Update_状态的方法,该方法返回一个byRef变量

Cls_ICCID

公共子更新_状态**ByRef massege为字符串**,ByVal ICCID_No为整数,ByVal状态为整数 尝试 Dim cmd作为SqlCommand 将sql设置为字符串 Dim myConnection As SqlConnection=新建SqlConnection myConnection.ConnectionString=数据源=TEHRANI\TEHRANI;初始目录=GSM生产;持久安全信息=True;用户ID=sa;密码=1 sql=更新Tbl\U ICCID SET Status=状态,其中ICCID=ICCIDNo myConnection=newsqlconnectionsql 我的连接,打开 cmd=New-SqlCommandsql,myConnection cmd.ExecuteNonQuery cmd.Dispose 我的连接,关闭 成功地 特例 massege=服务器错误 结束尝试 端接头 然后,当文本框更改事件触发时,我执行该方法:

私有子Txt_ICCID_TextChangedByVal发送方作为System.Object,ByVal e作为System.EventArgs处理Txt_ICCID.TextChanged Dim clsICCID作为Cls_ICCID clsICCID.Update_StatuslblError.Text,Txt_ICCID.Text,1 端接头 但这给了我一个例外:

算术运算导致溢出。 我做错了什么


我应该使用from函数而不是sub方法。因为sub方法是无效的。

老实说,正如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

但就我个人而言,我不会以这种方式处理异常并返回布尔值。

您特别要求的是在方法中返回值。您必须像函数一样声明它,然后使用return返回值,而不是Sub:

然后捕捉值:

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

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

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)
见:


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

错误消息与您发布的代码完全无关。此外,礼貌地说,这个代码非常奇怪。我该怎么办?你有什么建议吗?我想知道如果数据库的操作是断开连接的,在我的页面中的lblerror中,wroteserver Error,但我不知道如何在method中声明返回值更改项目属性并设置OPTION STRICT ON并检查结果。当到达returnValue=Update\u StatusTxt\u ICCID.Text时,1,跳转到异常如果Txt_ICCID.Text是字符串,则不应将其作为整数参数的输入发送。是的,我将ICCID_No的类型更改为字符串,并在clsICCID.Update_StatusTxt_ICCID.Text.tostring中,1!!但请给我一个例外:对象引用未设置为对象的实例。可能Txt_ICCID或Txt_ICCID.Text为空。。在调试器中设置断点并检查其值。感谢您花时间回答我的问题。我提高了您的声誉,但降低了它。我认为我的函数不会引发异常。在那里中断异常,调试器是否停止在那里?也许你会发布更多的代码,当到达returnValue=Update\u StatusTxt\u ICCID.Text,1时,跳转到exception@SaharKiyan:Txt_ICCID.Text包含哪些数据?尝试将其转换为整数,如returnValue=Update\u StatusConvert.ToInt32Txt\u ICCID.Text,1@SaharKiyan可能Txt_ICCID.Text不是一个数字。也许错误就是这样来的。在任何情况下,您都应该首先将其转换为数字。是的,我将ICCID的类型更改为字符串,并在clsICCID.Update\u StatusTxt\u ICCID.Text.tostring中更改为1!!但请给我一个例外:对象引用未设置为对象的实例。@SaharKiyan没有必要在Txt_ICCID.Text中使用.ToString,因为它已经是一个字符串。检查控制Txt_ICCID或发布相关代码,以便我们帮助您。错误就在那一边。
returnValue = Update_Status(Txt_ICCID.Text, 1)