Justin Gehtland has a good article on 10 ways to make your code more testable over on TheServerSide.NET, although I am not a big fan of mocking out the database as he does.
I think mock objects should be reserved for things your application needs to interact with that are out of the application’s control. If the database is for your application, then you should not need to mock it out. If the database is not part of your application and you are accessing it directly, you might want to read up about SOA.