Connection Pooling is implemented by each Provider. Therefore, ODBC Provider may handle connection pooling differently from the SQL Provider, OleDB Provider and Oracle Provider.
The trick to pooling successfully is to use Integrated Security or have the connection strings Identical in each connection (this includes capitalizations whether it's VB.NET or C#.NET).
Connections must also be closed in order to be return to the pool. Connections that are not closed will timeout and not be returned to the pool.
You can do this by closing the connection prior to disposing the object or by implementing the IDispose interface.
Check the help file for other Providers to take advantage of connection pooling.