记录集上的系统空引用异常
system nullreferenceexception on recordset
在我问这个问题之前,我查看了 SO 提出的所有建议并对此进行了研究(什么是 NullReferenceException,我该如何解决?)
我的用户控件中有一个函数
用户控制:
Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean)
MedewerkerNaam = "Onbekend"
If IIsNumeric(Medewerker) = True Then
rs = Server.CreateObject("ADODB.Recordset")
rs.open ("SELECT Medewerkers.Medewerkers_Voornaams_AchternaamVoorvoegsel, Medewerkers.Medewerkers_Achternaam, Medewerkers.Medewerkers_MeisjesnaamVoorvoegsel, Medewerkers.Medewerkers_Meisjesnaam FROM Medewerkers WHERE Medewerkers.Medewerkers_ID = 0" & int(Medewerker), strCon)
If NOT rs.EOF Then
MedewerkerNaam = rs("Medewerkers_Voornaam") & " " & rs("Medewerkers_AchternaamVoorvoegsel") & " " & rs("Medewerkers_Achternaam")
If Meisjesnaam = True AND rs("Medewerkers_Meisjesnaam") <> "" Then MedewerkerNaam = MedewerkerNaam & " - " & rs("Medewerkers_MeisjesnaamVoorvoegsel") & " " & rs("Medewerkers_Meisjesnaam")
End If
rs.Close
rs = nothing
End If
End Function
在我的 webform.aspx:
<%dim deneme as new basic%>
this is a testttt : <%=deneme.MedewerkerNaam(10,false)%>
为什么会出现错误:
system.nullreferenceexception object reference not set to an instance of an object
错误来自的行:
rs = Server.CreateObject("ADODB.Recordset")
抱歉,如果这是愚蠢的事情,那只是我不明白,我怎样才能确保我不会再遇到这个问题?
这是一个简单的范围问题。 Server 是 System.Web.UI.Page 的 属性,您的 aspx 是从中继承的。我猜你的函数 MedewerkerNaam 是在这个 aspx 页面 class 之外定义的,因此服务器 属性 是不可见的。
你有两个选择:
将函数 MedewerkerNaam 移到继承自 System.Web.UI.Page[= 的 aspx class 中34=]。
您的代码应该可以正常工作,因为基础 aspx 页面 class' Server
属性 将可见,或
像这样将服务器对象传递到您的函数中...
Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean, Server As System.Web.HttpServerUtility)
...
End Function
并且当您从 aspx class 调用 MedewerkerNaam 时,添加包含服务器 属性,如下所示:
Public Class your_aspx_class
Inherits System.Web.UI.Page
Sub your_method(...)
...
something = MedewerkerNaam(someint, somebool, Server)
...
End Sub
End Class
在我问这个问题之前,我查看了 SO 提出的所有建议并对此进行了研究(什么是 NullReferenceException,我该如何解决?)
我的用户控件中有一个函数
用户控制:
Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean)
MedewerkerNaam = "Onbekend"
If IIsNumeric(Medewerker) = True Then
rs = Server.CreateObject("ADODB.Recordset")
rs.open ("SELECT Medewerkers.Medewerkers_Voornaams_AchternaamVoorvoegsel, Medewerkers.Medewerkers_Achternaam, Medewerkers.Medewerkers_MeisjesnaamVoorvoegsel, Medewerkers.Medewerkers_Meisjesnaam FROM Medewerkers WHERE Medewerkers.Medewerkers_ID = 0" & int(Medewerker), strCon)
If NOT rs.EOF Then
MedewerkerNaam = rs("Medewerkers_Voornaam") & " " & rs("Medewerkers_AchternaamVoorvoegsel") & " " & rs("Medewerkers_Achternaam")
If Meisjesnaam = True AND rs("Medewerkers_Meisjesnaam") <> "" Then MedewerkerNaam = MedewerkerNaam & " - " & rs("Medewerkers_MeisjesnaamVoorvoegsel") & " " & rs("Medewerkers_Meisjesnaam")
End If
rs.Close
rs = nothing
End If
End Function
在我的 webform.aspx:
<%dim deneme as new basic%>
this is a testttt : <%=deneme.MedewerkerNaam(10,false)%>
为什么会出现错误:
system.nullreferenceexception object reference not set to an instance of an object
错误来自的行:
rs = Server.CreateObject("ADODB.Recordset")
抱歉,如果这是愚蠢的事情,那只是我不明白,我怎样才能确保我不会再遇到这个问题?
这是一个简单的范围问题。 Server 是 System.Web.UI.Page 的 属性,您的 aspx 是从中继承的。我猜你的函数 MedewerkerNaam 是在这个 aspx 页面 class 之外定义的,因此服务器 属性 是不可见的。
你有两个选择:
将函数 MedewerkerNaam 移到继承自 System.Web.UI.Page[= 的 aspx class 中34=]。
您的代码应该可以正常工作,因为基础 aspx 页面 class' Server 属性 将可见,或
像这样将服务器对象传递到您的函数中...
Function MedewerkerNaam(Medewerker as integer, Meisjesnaam as boolean, Server As System.Web.HttpServerUtility) ... End Function
并且当您从 aspx class 调用 MedewerkerNaam 时,添加包含服务器 属性,如下所示:
Public Class your_aspx_class
Inherits System.Web.UI.Page
Sub your_method(...)
...
something = MedewerkerNaam(someint, somebool, Server)
...
End Sub
End Class