Working DataBase + tests.

DataBase encapsulates the connection/error handling for SQL so we don't have try { conn.Open } ... etc all over the place.