2008-09-25 95 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 

希望幫助!

相關問題