>My data class calls a method to get the schema. It had this:
>
>
>Using loSQLConnection As New SqlConnection(oApp.aConnection(nConnectionString, 1))
> loSQLConnection.Open()
> oCommand.Connection = loSQLConnection
> oDataReader = oCommand.ExecuteReader(CommandBehavior.SchemaOnly)
> oDataTable = oDataReader.GetSchemaTable
>End Using
>
>
>The loSQLConnection.Open() was not necessary. Once removed, no connectivity remained.
>
>The updated code is as follow:
>
>
>Using loSQLConnection As New SqlConnection(oApp.aConnection(nConnectionString, 1))
> loSQLConnection.Open()
> oCommand.Connection = loSQLConnection
> oDataReader = oCommand.ExecuteReader(CommandBehavior.SchemaOnly)
> oDataTable = oDataReader.GetSchemaTable
>End Using
>
>
>But, later on, still in the DataAdapter.Fill() command, this applies a permanent connection to something.
>
>
>Using loSQLConnection As New SqlConnection(oApp.aConnection(nConnectionString, 1))
> oCommand.Connection = loSQLConnection
> oDataAdapter.Fill(oDataSet)
>End Using
>
>
>When that command executes, something remains stuck in memory. I have tried, oCommand.Connection.Close(), oCommand.Dispose(), oDataAdapter = Nothing and all of that at the same time.
>
>Do you see anything in there that is missing?
IIRC ADO.NET maintains a connection pool and your new SqlConnection() will just grab (or release) an existing connection from the pool. I think there's a ClearPool method - check this:
https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx