过程返回错误:无法将 System.Int32 转换为 System.Int32[]

Posted

技术标签:

【中文标题】过程返回错误:无法将 System.Int32 转换为 System.Int32[]【英文标题】:Procedure returns error: Cannot cast System.Int32 to System.Int32[] 【发布时间】:2015-01-04 04:31:44 【问题描述】:

我编写了一个程序,它应该从我的数据库中返回一个值。要返回的值是一个整数。这是我的代码:

    Private Sub btnSelectProducts_Click(sender As Object, e As EventArgs) Handles btnSelectProducts.Click

    Try

    'Connection Variables
    Dim cnn As SqlCeConnection
    Dim connectionString As String

    'Connect to database
    connectionString = "Data Source=|DataDirectory|\Database\ContactsAndInventory.sdf"
    cnn = New SqlCeConnection(connectionString)

    Dim Stream As New MemoryStream()
    cnn.Open()

    Dim command As New SqlCeCommand("SELECT CATEGORY_ID FROM PRODUCT_CATEGORY WHERE (CATEGORY_NAME = @CATEGORY_NAME)", cnn)
    command.Parameters.AddWithValue("@CATEGORY_NAME", txtCategoryName.Text)

        Dim catId As Integer() = CType(command.ExecuteScalar(), Integer())'Error Here

    MsgBox(catId)

        cnn.Close()

    Catch ex As Exception

        MsgBox(ex.ToString)

    End Try


End Sub

我收到错误:

System.InvalidCastException: Unable to cast objct to type System.Int32 to type System.Int32[]

不知道为什么,该字段是一个整数字段,而我试图返回的值是一个整数。我做错了什么?

【问题讨论】:

Dim catId As Integer() 是一个整数数组,离开(),它会起作用的。 【参考方案1】:

我发现我的错误:

  Dim catId = Convert.ToInt32(command.ExecuteScalar())

【讨论】:

以上是关于过程返回错误:无法将 System.Int32 转换为 System.Int32[]的主要内容,如果未能解决你的问题,请参考以下文章

InvalidCastException:无法将“System.DBNull”类型的对象转换为“System.Nullable`1[System.Int32]”[重复]

无法将“System.String”类型的对象转换为“System.Int32”类型。关于 Blazor/Razor 路由参数

通过 AJAX 将 JSON 数据发布到 Web API 失败,并显示“无法将 JSON 值转换为 System.Int32”

无法在 DataReader.GetString() 中将“System.Int32”类型的对象转换为“System.String”类型

C# - 将列表 System.Object[] 转换为列表 System.Int32[]

为啥 GetType 返回 System.Int32 而不是 Nullable<Int32>? [复制]