asp.net – 如何在VB.net中处理SqlDataReader null值
发布时间:2020-12-16 07:35:15 所属栏目:asp.Net 来源:网络整理
导读:我有以下代码执行查询并返回结果.但是,我环顾四周并找到一些例子来处理空值,但是我收到一个错误:“当没有数据存在时无效的读取尝试.”我也得到了错误:“从类型’DBNull’转换为’Decimal’类型无效.” 有人可以帮我解决这个代码,以防止空值崩溃我的程序?
我有以下代码执行查询并返回结果.但是,我环顾四周并找到一些例子来处理空值,但是我收到一个错误:“当没有数据存在时无效的读取尝试.”我也得到了错误:“从类型’DBNull’转换为’Decimal’类型无效.”
有人可以帮我解决这个代码,以防止空值崩溃我的程序? Private Sub EFFICIENCY_STACKRANK_YTD(ByVal EMPLOYEE As String) Dim queryString As String = "SELECT " & _ " (SELECT CAST(SUM(TARGET_SECONDS) AS DECIMAL)/ CAST(SUM(ROUTE_SECONDS) AS DECIMAL) FROM dbo.APE_BUSDRIVER_MAIN WITH(NOLOCK) WHERE APE_AREA_OBJID = " & lblAreaOBJID.Text & " AND EMPLOYEE_NAME = '" & EMPLOYEE & "' AND YEAR_TIME = '" & cbYear.Text & "' AND ACTIVE = 1) AS RESULT1" & _ " FROM dbo.APE_BUSDRIVER_MAIN " Using connection As New SqlConnection(SQLConnectionStr) Dim command As New SqlCommand(queryString,connection) connection.Open() Dim reader As SqlDataReader = command.ExecuteReader() If reader.Read Then RESULT1 = reader("RESULT1") Else RESULT1 = 0 End If End Using End Sub 解决方法
你打开了读卡器,但没有要求它实际读取任何内容.
在此之后: Dim reader As SqlDataReader = command.ExecuteReader() 加 If reader.Read() Then 并将结果读数包装到此if语句中,即 If reader.Read() Then Dim index As Integer = reader.GetOrdinal("RESULT1") If reader.IsDBNull(index) Then RESULT1 = String.Empty Else RESULT1 = reader(index) End If End If 请注意,这是有效的,因为您的SQL应该只返回一条记录.如果您正在读取多个记录,则需要在循环中调用Read语句,直到没有更多记录为止,即 Do While reader.Read() Loop (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 为什么Visual Studio不会在发布中移动某些文
- asp.net-mvc – 从数据库显示剃须刀
- 从yield关键字看IEnumerable和Collection的区别
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命
- 如何知道asp.net 3.5 sp1和asp.net mvc是否安装在服务器中?
- 充分利用ASP.NET的三种缓存提高站点性能的注意方法
- asp.net-mvc – ASP.NET MVC,强类型视图,部分视图参数毛刺
- asp.net-mvc – 如何将字符串传递给ASP.NET MVC中的部分视图
- asp.net Ajax之无刷新评论介绍
- asp.net-core – 如何将ASP.NET 5(vnext)从Beta5升级到Beta