【问题标题】:OverFlowException on Executescalar on vb.netvb.net 上的 Executescalar 上的 OverFlowException
【发布时间】:2017-11-29 13:31:47
【问题描述】:

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

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

(它在“try”下的行中给出了问题,因此“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

【问题讨论】:

  • 你的退货栏EIDCardNumber是INT吗?
  • 在 Sql Server Management Studio 中,相同的 @name 参数在代码中失败的返回值是多少?这个值可以转换成 Int32 吗?
  • 我将 returnId 更改为 String 而不是 int,并在数据库中更改为数​​据类型 varchar。现在错误不会发生在执行行上,而是发生在 retun 行上。完全一样的错误。有什么想法吗?
  • 您的函数仍在返回整数。 VB在返回值时会进行字符串到整数的隐式转换。
  • @Robert 那么我怎样才能以最简单的方式解决这个问题呢?在我返回它之前做一个 ParseInt 吗?

标签: sql asp.net vb.net executescalar


【解决方案1】:

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

Int32.TryParse(com.ExecuteScalar, returnedId) 

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果您确定 EIDCardNumber 列是整数类型列,请尝试将 Dim returnedId As Integer = 0 更改为 Dim returnedId As Long = 0,如果问题仍然存在,请尝试将 selecter 的值更改为 "SELECT top 1 EIDCardNumber FROM [dbo].[_User] where DisplayName = @name"

      【讨论】:

      • @Manuelv ,如果这不起作用,请提供 EIDCardNumber 列的数据类型。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2020-08-29
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多