如何在vb.net中将字符串值转换为整数

如何在vb.net中将字符串值转换为整数,vb.net,Vb.net,Sql Server数据库中费用的数据类型为int,请参考 我从费用表中得到的费用值 'Total Expenses B/W Dates sql = "select COALESCE (SUM (amount), 0) from tblexpense Where transactiondate >= @p1 and transactiondate <= @p2" CmdObj = New SqlCommand(sql, ConObj) CmdObj.Param

Sql Server数据库中费用的数据类型为int,请参考

我从费用表中得到的费用值

'Total Expenses B/W Dates
    sql = "select COALESCE (SUM (amount), 0) from tblexpense Where transactiondate >= @p1 and transactiondate <= @p2"
    CmdObj = New SqlCommand(sql, ConObj)
    CmdObj.Parameters.Add("@p1", SqlDbType.Date).Value = DateTimePicker1.Value.Date
    CmdObj.Parameters.Add("@p2", SqlDbType.Date).Value = DateTimePicker2.Value.Date
    CmdObj.ExecuteScalar()
    Dim sumexpense As Integer = CmdObj.ExecuteScalar
    LblExp.Text = "Rs. " & sumexpense

您应该像在第一块代码中一样使用相同的参数化语句。然后确保lblExp.Text可以解析为整数,以确保来自用户的输入可以匹配类型,并且在成功解析后,将该变量传递到您的参数中。我尝试了,但没有成功。。。从字符串到整数的转换无效。是否修复语句以使用参数?因为在当前版本中,注入的值仍用撇号包装,而用撇号包装的值表示字符串类型而不是数字类型。参数也可以解决此问题。请更新帖子以显示参数化版本。此外,当您完成错误时,其中一些对象应该被处理。。。无法将参数值从字符串转换为int32
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    ConObj = New SqlConnection(ConStr)
    ConObj.Open()
    Dim sql As String = "insert into tblbalance (tcon,pcon,ecoll,pendcoll,expense,bcoll,nprofit) values(@tcon,@pcon,@ecoll,@pendcoll,@expense,@bcoll,@nprofit)"

    With CmdObj
        .Parameters.Add("@tcon", SqlDbType.Int).Value = lblTcon.Text
        .Parameters.Add("@pcon", SqlDbType.Int).Value = LblPcon.Text
        .Parameters.Add("@ecoll", SqlDbType.Int).Value = LblEColl.Text
        .Parameters.Add("@pendcoll", SqlDbType.Int).Value = LblPColl.Text
        .Parameters.Add("@expense", SqlDbType.Int).Value = LblExp.Text
        .Parameters.Add("@bcoll", SqlDbType.Int).Value = LblBcoll.Text
        .Parameters.Add("@nprofit", SqlDbType.Int).Value = LblNet.Text

    End With
    CmdObj.Connection = ConObj
    CmdObj.ExecuteNonQuery()
    MsgBox("Saved Successfully")
    ConObj.Close()
End Sub
Imports System.Text.RegularExpressions
Private Shared Function GetIntOnly(ByVal value As String) As Integer
    Dim returnVal As String = String.Empty
    Dim collection As MatchCollection = Regex.Matches(value, "\d+")
    For Each m As Match In collection
        returnVal += m.ToString()
    Next
    Return Convert.ToInt32(returnVal)
End Function

  Dim sql As String = "insert into tblbalance (tcon,pcon,ecoll,pendcoll,expense,bcoll,nprofit) values('" &
        lblTcon.Text & "','" & LblPcon.Text & "','" & GetIntOnly(LblEColl.Text) & "','" & GetIntOnly(LblPColl.Text) & "','" &
        GetIntOnly(LblExp.Text) & "','" & GetIntOnly(LblBcoll.Text) & "','" & GetIntOnly(LblNet.Text) & "')"