Depends on your database type. Some providers (like the SqlServer one) clean up after a connection is closed. However oracle, firebird etc. don't do that in that way, you have to call Dispose to make the provider clean up unmanaged resources. An adapter keeps the last created connection object around in a closed state if you call Close(), so a call to that connection's Dispose method is required to get things cleaned up before the GC eventually does this.
So to avoid the trouble, just wrap the dataaccessadapter creation/usage code in a using statement, which automatically calls Dispose() at the end