Hej, Jonas, Okej, så då bör inte postlåsningen ligga kvar efter att jag har stängt datareadern då? Stönger du readern, så stänger du din connection - finns det ingen connection kan det inte finnas några lås.Funktionsbibliotek och stänga databasanslutning
Jag använder följande kod i ett externt klassbibliotek som jag kompilerar som en DLL-fil:
Public Shared Function executeDataReader(ByVal strConnectionString As String, ByVal strSelectSQL As String) As OleDb.OleDbDataReader
Dim dbConnection As OleDb.OleDbConnection
Dim dbCommand As OleDb.OleDbCommand
If UCase(Left(strSelectSQL, 6)) <> "SELECT" Then
Exit Function
End If
dbConnection = New OleDb.OleDbConnection(strConnectionString)
dbConnection.Open()
dbCommand = New OleDb.OleDbCommand(strSelectSQL, dbConnection)
executeDataReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)
End Function
Det fungerar bra, så länge man inte får för sig att lägge in följande rad sist i ovanstående funktion:
dbConnection.Close()
Då stängs datareadern innan jag hinner läsa data ur den, och jag får felet:
System.InvalidOperationException: Invalid attempt to Read when reader is closed.
Jag har läst och hört att man måste se till så att anslutningar till databasen verkligen stängs, men om man inte har med ovanstående rad stannar postlåsningsinformation kvar.
Jag anropar datareadern såhär på .aspx-sidan:
Dim intID as Integer 'Hämtas från sidan
Dim dbReader As OleDb.OleDbDataReader = clsLibrary.withSQLviaOLEDB.executeDataReader(Application("sConn"), "SELECT Namn, KortBeskrivning, Tillvägagångssätt, Skribent, BildSökväg, BildAktiv FROM tbl_Recept WHERE r_ID = " & intID)
dbReader.Read()
'Värdeshämtning från databas
dbReader.Close()
Tacksam för hjälp!
Sv: Funktionsbibliotek och stänga databasanslutning
När du anropar <b>Close</b> metoden på din <b>DataReader</b> så kommer din connection också att stängas pga. följande rad kod som du har i din metod.
executeDataReader = dbCommand.ExecuteReader(CommandBehavior.CloseConnection)
där du anger beteendet <b>CommandBehavior.CloseConnection</b> för din reader.
Sv: Funktionsbibliotek och stänga databasanslutning
Sv: Funktionsbibliotek och stänga databasanslutning