Revelation may be too strong a word, but that's what it felt like when I figured out this problem earlier:
Create a SqlConnection, _con
Set _con.ConnectionString to my connection string
Open connection
Do some stuff
Close connection, no need for it to be open if it's not being used? (In this application this is the best approach)
Re-open connection
Try and do some stuff, but get an Error: Access denied message
Throw up hands in dispair after realising that the password parameter has been dropped from the connection string... Why why why?
Thankfully there's a very simple solution to this, just add Persist Security Info=True to the connection string, and the password will be, well, persisted, regardless of how many times the connection is opened and closed.