webForumDet fria alternativet

ObjReader Fel

16 svar · 428 visningar · startad av lp_maxi

lp_maxiMedlem sedan dec. 20049 inlägg
#1

Hallå!

Jag håller på att läsa boken Lär Dig ASP.NET På 3 Veckor

Och nu har kört fast i ett kodexempel.

Fel meddelandet ser ut så här:

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

Line 155: dgData.DataBind()
Line 156:
Line 157: objReader.Close
Line 158: objCmd.Connection.Close()
Line 159:

Koden är rätt lång. den ligger på 285 Rader.

Men om ni vill ha koden så finns den här.
https://www.aspsidan.se/code/?c=3064

Hoppas någon kan hjälpa mig!

:q :q

DinoMedlem sedan sep. 20011 918 inlägg
#2
 141:           Dim objReader As [b]New[/b] OleDbDataReader
lp_maxiMedlem sedan dec. 20049 inlägg
#3

Va det allt till svar?

Vad ska jag göra med den kod raden?

Mc FettoMedlem sedan nov. 20021 920 inlägg
#4

lp_maxi skrev:

Va det allt till svar?

Vad ska jag göra med den kod raden?

jämföra dinos kodrad med din egen... :i

lp_maxiMedlem sedan dec. 20049 inlägg
#5

Det hjälpte inte att sätta dit New

JonMedlem sedan juli 20011 126 inlägg
#6

Jag tycker att det känns som om du ska deklarera ditt dgData någonstans. Är inte så hemma på VB.net men typ:

script runat="server">
  'Skapa Databas koppling

Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
	   "Data Source=min sökväg som jag inte visar här")
Protected dgData as DataGrid
DinoMedlem sedan sep. 20011 918 inlägg
#7

Då kanske detta är problemet. Ersätt

objReader.Close

med

objReader.Close()
lp_maxiMedlem sedan dec. 20049 inlägg
#8

Går fortfarande in

Det hjälpte inte att sätta objReader.Close()

Jag får fel meddelande ännu.

Men dom inne på aspsidan snackar om att jag ska sätta objReader till Null

typ så här

objReader = Nothing efter jag har stägnt det.

Men det funkar ändå inte.

JonMedlem sedan juli 20011 126 inlägg
#9

Jag tror ändå att din datareader är null och därmed din datasource på diit datagrid.

Anledningen till att datareadern skull ekunna vara null kan vara att din connection inte är rätt. Kolla om din connection är null eller om din datareader är null. Där skulle jag börja :)

GladhMedlem sedan maj 20013 024 inlägg
#10

143: Try
144: objCmd.Connection.Open()
145: objReader = objCmd.ExecuteReader()
146: Catch Ex As Exception
147: lblMessage.Text = "Fel vid hämtning av databasen"
148: End Try

150: dgData.DataSource = objReader
151: If Not EditIndex.Equals(Nothing) Then
152: dgData.EditItemIndex = EditIndex
153: End If
154:
155: dgData.DataBind()
156:
157: objReader.Close
158: objCmd.Connection.Close()

Denna kodsnutt är/kommer att vara en felkälla.

Om du får ett fel i din databas så kommer ditt objReader att vara NULL då den inte kommer få någotvärde, du kommer även gå in i din Catch() kod och skriva ut ett meddelande till lbl. Tyvärr så kommer du fortsätta längre ner i koden med att sätta ditt dgDataGrids datasource till Null (det är inget fel, men är nog inte var du tänkt dig).

Du kommer sedan längre ner i koden att försöka dig på en .Close() method på ett objekt som INTE finns, och det kommer att ge dig ett NullReference fel.

Om du vill behålla din kod så måste du innan du gör din objReader.Close() kontrollera så att objReader != null.

- M

lp_maxiMedlem sedan dec. 20049 inlägg
#11

Mmm men det roliga är att koden är en exakt kopia som i boken och ändå fungerar det inte.

hur får jag objReader till null då?

Det går inte att skriva objReader = Nothing för jag får felmeddelande då med.

GladhMedlem sedan maj 20013 024 inlägg
#12

Mmm men det roliga är att koden är en exakt kopia som i boken och ändå fungerar det inte.

Om det är en EXAKT kopia så förstår jag att det inte fungerar då du GARANTERAT inte har en likadan connectionstring på din dator som det står i koden.

hur får jag objReader till null då?

Du vill INTE ha objReader till Null, det är ju det som är problemet att den är Null. Du vill ha att den skall innehålla en referens till ett objekt.

Du har garanterat problem med någon av följande 2 rader:

144: objCmd.Connection.Open() 
145: objReader = objCmd.ExecuteReader()

Så mitt tips till dig blir att se över de raderna genom att sätta en breakpoint på dessa raderna och så stega dig igenom koden för att se vad som blir fel.

- M

lp_maxiMedlem sedan dec. 20049 inlägg
#13

Hur gön breakpoint på dom två raderna då?

GladhMedlem sedan maj 20013 024 inlägg
#14

Hur gön breakpoint på dom två raderna då?

Det är beroende på din utvecklingsmiljö, men för visual stuido så markera man raden trycker F9 och sedan sä köra man sidan i debug läge.

Vilken utvecklingsmiljö har du?

- M

lp_maxiMedlem sedan dec. 20049 inlägg
#15

Jag kodar i dreamWeaver

har inte hittat visual studio.net på dc ännu

GladhMedlem sedan maj 20013 024 inlägg
#16

DreamWeaver vet jag inget om. Även om du inte fått tag I en olaglig kopia av VS.NET så finns det lagliga varianter som du kan använda dig av...

Här finns för VS 2005: http://lab.msdn.microsoft.com/vs2005/

Eller så kan du välja WebMatrix från http://www.asp.net. Vet dock inte om man kan debuga I webmatrix...

Jag kan dock säga dig att utan möjligheten att debuga sig igen sin kod så kan man lika gärna lägga ner utvecklingen helt och hållet. Möjligheten att felsöka och debuga sin kod är mer än halva utvecklingsarbetet.

- M

lp_maxiMedlem sedan dec. 20049 inlägg
#17

Jag ska dra hem vs.net och kolla vad de programet har att säga

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb