objectreferentie niet ingesteld op een instantie van object

Ik krijg een foutmelding in VB .Net

objectreferentie niet ingesteld op een instantie van object.

Kunt u mij vertellen wat de oorzaken van deze fout zijn?


Antwoord 1, autoriteit 100%

sef,
Als het probleem te maken heeft met de resultaten van de databaseretour, neem ik aan dat het in dit scenario zit:

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

Om dat op te lossen:

 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

bewerken: tags voor codeopmaak toegevoegd …


Antwoord 2, autoriteit 91%

Het object is niet geïnitialiseerd voor gebruik.

Bovenaan uw codebestandstype:

Option Strict On
Option Explicit On

Antwoord 3, autoriteit 100%

Laten we de foutmelding ontleden.

“objectreferentie” betekent een variabele die u in uw code hebt gebruikt en die naar een object verwijst. De objectvariabele kan door jou gedeclareerd zijn of je gebruikt gewoon een variabele die in een ander object is gedeclareerd.

“instantie van object” Betekent dat het object leeg is (of in VB-spraak, “Niets“). Als je te maken hebt met objectvariabelen, moet je een instantievan dat object maken voordat je ernaar verwijst.

“niet ingesteld op een ” betekent dat u probeerde toegang te krijgen tot een object, maar dat er niets in zat waartoe de computer toegang had.

Als u een variabele maakt zoals

Dim aPerson as PersonClass

Alles wat je hebt gedaan, vertel de compiler die aperson een persoon zal vertegenwoordigen, maar niet wat persoon.

U kunt een lege kopie van het object maken met behulp van het “nieuwe” sleutelwoord. Bijvoorbeeld

Dim aPerson as New PersonClass

Als u wilt testen om te zien of het object “niets” is door

If aPerson Is Nothing Then
    aPerson = New PersonClass
End If

Ik hoop dat dat helpt!


Antwoord 4, Autoriteit 40%

In het algemeen gebeurt in het algemeen onder de .NET-runtime, zoals een variabele die niet is toegewezen of de waarde Nothing(in vb.net, nullin c #) is afgeleide.

Option Strict OnEN Option Explicit OnHELPT DE EXPANTIES TE DETECTEN INDIENINGEN WAAR DAT DIT MOETEN OM EEN NULL / NIETS TE KRIJGEN VAN EEN ANDERE FUNCTIESOP:

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

en de nullreferenceException is de bron van De “Object Reference niet ingesteld op een exemplaar van een object”.


Antwoord 5, Autoriteit 40%

En als u denkt dat het optreedt wanneer er geen gegevens worden geretourneerd uit een databasequery, dan moet u misschien het resultaat testen voordat u erop wordt uitgevoerd?

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

Antwoord 6, autoriteit 20%

U kunt een logboekmechanisme in uw toepassing plaatsen, zodat u de oorzaak van de fout kunt achterhalen. Een Exception-object heeft de eigenschap StackTrace, een tekenreeks die de inhoud van de aanroepstack beschrijft, waarbij de meest recente methodeaanroep eerst wordt weergegeven. Door ernaar te kijken, krijgt u meer details over wat de uitzondering zou kunnen veroorzaken.


Antwoord 7, autoriteit 20%

Als u met databases werkt, kunt u deze fout krijgen wanneer u een waarde probeert te krijgen uit een veld of rij die niet bestaat. d.w.z. als u datasets gebruikt en u gebruikt:

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

u krijgt het object “referentie niet ingesteld op een instantie van object” als tabelnaam niet bestaat in de gegevensset. Hetzelfde geldt voor rijen of velden in de datasets.


Antwoord 8

Nou, Fout verklaart zichzelf. Aangezien u geen codevoorbeeld hebt verstrekt, kunnen we alleen zeggen dat u ergens in uw code een Null-object voor een taak gebruikt. Ik kreeg dezelfde fout voor het onderstaande codevoorbeeld.

Dim cmd As IDbCommand
cmd.Parameters.Clear()

Zoals je kunt zien, ga ik een null-object wissen. Daarvoor krijg ik Error

“objectreferentie niet ingesteld op een instantie van een object”

Controleer uw code voor een dergelijke code in uw code. Omdat je geen codevoorbeeld hebt gegeven, kunnen we de code niet markeren 🙂


Antwoord 9

Als u een klassenobject en meerdere constructeurs hebt, moet u de accommodatie in alle constructeurs initialiseren.

Other episodes