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
相关产品推荐
相关产品推荐

