2008-09-25 52 views
0

我在VB.net“对象引用未设置为对象实例”中出现错误。你能告诉我这个错误的原因是什么?谢谢..未将对象引用设置为对象的实例

+1

这将是一件好事,如果你可以发布你的代码文件,产生这个错误 – cruizer 2008-09-25 01:55:44

+1

张贴代码,所以我们不在黑暗中拍摄;或至少描述发生了什么! – 2008-09-25 03:10:10

+0

可能重复[什么是NullReferenceException,我该如何解决它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-it) – stakx 2015-07-23 08:00:18

回答

1

海基会, 如果问题与数据库返回的结果,我相信这是在这种情况下:

dsData = getSQLData(conn,sql, blah,blah....) 
    dt = dsData.Tables(0) 'Perhaps the obj ref not set is occurring here 

为了解决这个问题:

dsData = getSQLData(conn,sql, blah,blah....) 
    If dsData.Tables.Count = 0 Then Exit Sub 
    dt = dsData.Tables(0) 'Perhaps the obj ref not set is occurring here 

编辑:添加的代码格式标记...

9

该对象在使用前未被初始化。

在你的代码文件类型的顶部:

Option Strict On 
Option Explicit On 
2

一般来说,在.NET运行时,这样的事情会发生,每当一个变量,它是未分配或分配值Nothing(在VB.Net,null在C#中)被解除引用。

Option Strict OnOption Explicit On将帮助检测可能发生此类情况,但有可能得到另一个函数调用空/没有:

Dim someString As String = someFunctionReturningString(); 
If (someString Is Nothing) Then 
    Sysm.Console.WriteLine(someString.Length); // will throw the NullReferenceException 
End If 

NullReferenceException是“对象引用源未设定到一个对象的实例“。

1

您可以在应用程序中放置日志记录机制,以便找出错误的原因。一个Exception对象具有StackTrace属性,该属性是描述调用堆栈内容的字符串,最近的方法调用首先出现。通过查看它,你会得到更多关于可能导致异常的细节。

2

如果您认为在数据库查询中没有返回数据时发生这种情况,那么也许您应该测试在对它进行操作之前的结果?

Dim result As String = SqlCommand.ExecuteScalar() 'just for scope' 
If result Is Nothing OrElse IsDBNull(result) Then 
    'no result!' 
End If 
1

使用数据库时,当您尝试从不存在的字段或行中获取值时,可能会出现此错误。也就是说,如果你使用的数据集,并使用:

Dim objDt as DataTable = objDs.Tables("tablename") 

你的对象“引用未设置为对象的实例”,如果表名不Dataset中存在。数据集中的行或字段相同。

1

让我们解构错误信息。

“对象引用”是指您在引用对象的代码中使用的变量。对象变量可能已经由你声明,或者你可能正在使用另一个对象中声明的变量。

“对象的实例”表示该对象是空白的(或在VB中说,“Nothing”)。在处理对象变量时,必须在引用该对象之前创建该对象的实例

“未设置为”意味着您尝试访问某个对象,但计算机无法访问该对象。

如果你创建了

Dim aPerson as PersonClass 

所有你必须做的是告诉aPerson将代表一个人的编译器的变量,而不是什么人。

您可以使用“新建”关键字创建对象的空白副本。例如

Dim aPerson as New PersonClass 

如果你希望能够进行测试,看看如果对象是“无中生有”的

If aPerson Is Nothing Then 
    aPerson = New PersonClass 
End If 

希望帮助!

相关问题