在vb.net上的Executescalar上的OverFlowException

时间:2017-11-29 13:31:48

标签: sql asp.net vb.net executescalar

我在使用vb.net的asp.net工作,在后端我试图从数据库中选择一些东西。

但是每当我要求执行查询时,它都会出现一个错误,上面写着“OverflowException Ocuured'”。所做的查询在我的SQL Manager工具中完美运行。任何想法可能是什么问题。

(它在'尝试'所以' returnedId = com.ExecuteScalar'行)的行上给出问题

 Function selectEIDCardnumber(ByVal name As String) As Integer
        Dim con As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("testdatabase").ConnectionString)
        Dim selecter As String = "SELECT EIDCardNumber FROM [dbo].[_User] where DisplayName = @name"
        Dim com As New SqlCommand(selecter, con)
        com.Parameters.AddWithValue("@name", name)
        con.Open()
        Dim returnedId As Integer = 0
        Try
            returnedId = com.ExecuteScalar
        Catch ex As Exception
            Response.Redirect("oops.aspx")
        End Try

        con.Close()

        Return returnedId
    End Function

3 个答案:

答案 0 :(得分:0)

com.ExecuteScalar的结果大于max int值。

Int32.TryParse(com.ExecuteScalar, returnedId) 

答案 1 :(得分:0)

通过定义您的returnedId和Function As类型Integer,您告诉VB该值将是-2,147,483,648和2,147,483,647之间的整数。假设数据库中的数据是正确的,解决方案是将returnedId和Function类型更改为Int64,其中包含最多9,223,372,036,854,775,807的数字。

答案 2 :(得分:0)

如果您确定EIDCardNumber列是整数类型列,请尝试将Dim returnedId As Integer = 0更改为Dim returnedId As Long = 0,如果问题仍然存在,请尝试将selecter的值更改为{ {1}}