David was in the Youth set up at Watford and progressed to the first team. He played 13 games for them in the Premiership during the 1999/2000 season, scoring once in the 3-2 win over Southampton, but they were relegated to the Championship at the end of the season. In August 2001, Gillingham payed a sum of £100,000 to bring him to Kent, and he spent 3½ years with them before being released in January 2005. He played for Wycombe Wanderes and Walsall, before joining non-league Stevenage Borough in the summer of 2005. He was released after one season, and was playing for Lewes when Graham Westley brought him to NenePark on a non-contract basis on 18 January 2007.
He made his debut as a substitute against Stafford Rangers on 20 January, and played a further four times before being released on 15 March following the end of Westley's reign. He went to KetteringTown for the remainder of the season., before joining Barton Rovers in the summer. He left in November to join HalesowenTown for the rest of the season. In August 2008, he joined BrackleyTown of the BGB Southern League Premier Division. He left the Saints at the end of the 2008-09 and joined Oxford City on 1 June 2009.