You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET代码报错:运算符'>'未定义于User与Integer类型,求排查

问题分析与修复

错误原因

你的代码核心问题是类型不匹配:

  • GetUserById方法的返回类型是User对象,不是整数,但你把这个对象赋值给了userid变量,然后试图直接拿这个User对象和整数0做比较。
  • VB.NET无法将User类型直接转换为整数,也没有定义User和Integer之间的>比较运算符,所以抛出这两个错误。

修复方案

根据你的需求,有两种常见修复方式:

方式1:判断用户是否存在(更常用)

如果你的逻辑是“找到用户就执行后续操作”,直接判断返回的User对象是否不为空即可:

Dim user = uService.GetUserById(CInt(lblid.Text))
If user IsNot Nothing Then
    ' 这里写找到用户后的逻辑
End If

方式2:比较用户ID的值

如果确实需要验证用户ID是否大于0,要先确保对象不为空,再取User对象的Id属性(假设你的User类有Id属性)进行比较:

Dim user = uService.GetUserById(CInt(lblid.Text))
If user IsNot Nothing AndAlso user.Id > 0 Then
    ' 这里写逻辑
End If

额外建议:修复SQL注入风险

你的GetUserById方法里用了字符串拼接SQL,存在SQL注入漏洞,建议改成参数化查询:

Public Function GetUserById(ByVal UserNo As Integer) As User
    Dim sql = "SELECT * FROM Users WHERE id = @UserNo"
    Using _conn = New OleDbConnection(DbContext.GetOledbConnectionString())
        Return _conn.Query(Of User)(sql, New With {.UserNo = UserNo}).FirstOrDefault()
    End Using
End Function

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 07:37:25