I agree with Bas Schouten. One global connection for your database and then open it when you need it. The environment I work with may lead to this style though. I work with connections to Oracle, or MS SQL and the number of connections your applications keep a hold of is important. You don't want to connect to the database at the beginning of the day and have it maintained throughout the day by a user keeping the application open on his/her desktop.
By opening the database, when you need it and closing it when you are done, you keep the overhead on the server as low as possible. By this I open the Db on retrieval of data, create the disconnected recordset, close the db, the user does whatever he/she needs to do with it, open the db, make the edits (addnews, updates, deletes), close the db.
The determination probably would be different if you have one user accessing an MS Access database though. The first method will allow you to scale your applications to many users and different database systems easier though. One more benefit of this idea, is that with DCOM or MTS, you can begin to share object pools. User A creates and closes an adoConn, User B can use that object (no resources needed for instantiation) when they need it.