Hej. För säkerhets skull, lägg till ett Finally-block i din Try Catch och lägg close-raden där istället. Finally-blocket körs alltid. I ditt fall kanske felet uppstår i Try-blocket innan close-raden, och då körs den följdaktligen inte. Det var precis vad som hände, jag har ändrat en parameter och denna gick även med till den sparade proceduren varpå det blev fel i denna. Öppen DataReader fast jag stängt den
Jag har fått ett problem som jag inte riktigt vet hur jag ska lösa.
Jag gör ett antal läsningar mot en databas men sedan helt plötsligt så får jag följande fel:
- There is already an open DataReader associated with this Command which must be closed -
Naturligtvis har jag något fel i koden men vad.
Min första och andra läsning ser ut som följer, loopen körs 3 ggr:
command = New SqlCommand("SP_GetCarModell", DBConn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add("@Id", SqlDbType.Int).Value = 0
command.Parameters.Add("@DBIDstr", SqlDbType.NVarChar).Value = DBIDstr
Try
SQLReader = command.ExecuteReader
While SQLReader.Read()
MainTable.Append("<td class='ModellRad'>" & SQLReader("make") & " " & SQLReader("model") & " " & SQLReader("submodel") & " " & SQLReader("version") & "</td>")
End While
SQLReader.Close()
Catch ex As Exception
ErrorMsg.InnerHtml = ex.Message
End Try
Efter det görs följande läsning och det är när jag gör denna som det blir fel gång nr 2:
command = New SqlCommand("SP_GetJamforData", DBConn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add("@Id", SqlDbType.Int).Value = ValdVy
command.Parameters.Add("@DBIDstr", SqlDbType.NVarChar).Value = DBIDstr
Try
SQLReader = command.ExecuteReader
y = 0
While SQLReader.Read()
'Antalet namn i arryen talar ju om hur många fält som ska läsas in
DataArray(0, y) = SkapaFalt(SQLReader("Ar"), "")
DataArray(1, y) = SkapaFalt(SQLReader("make"), "")
DataArray(2, y) = SkapaFalt(SQLReader("model") & " " & SQLReader("submodel"), "")
DataArray(3, y) = SkapaFalt(SQLReader("version"), "")
DataArray(4, y) = SkapaFalt(FormatNumber(SQLReader("price"), 0, 0, 0, -2), "kr")
DataArray(5, y) = SkapaFalt(SQLReader("doors"), "")
DataArray(6, y) = SkapaFalt(SQLReader("bodywork"), "")
DataArray(7, y) = SkapaFalt(SQLReader("fueltype"), "")
DataArray(8, y) = SkapaFalt(SQLReader("insurance"), "")
DataArray(9, y) = SkapaFalt(SQLReader("tax"), "kr")
DataArray(10, y) = SkapaFalt(SQLReader("emissionClass"), "")
DataArray(12, y) = SkapaFalt(SQLReader("Chassino"), "")
y = y + 1
End While
SQLReader.Close()
Catch ex As Exception
ErrorMsg.InnerHtml = "<font color=Red>Error:</font><br>" & ex.Message
End Try
Jag tycker jag gör Close överallt men som sagt något är uppenbarligen fel.
Tacksam för hjälpSv: Öppen DataReader fast jag stängt den
Sv:Öppen DataReader fast jag stängt den
Tusen tack.
/Classe