He was born in Londonderry, Vermont, in 1772. the third son and second David born to Capt. James Rogers and Margaret McGregor, the first David having died at the age of four in 1766. He was named after his great-grandfather Rev. David McGregor of Londonderry, New Hampshire. He settled with his family in Fredericksburg Township in Lennox County after the American Revolution. His uncle, Major Robert Rogers, led a group known as Rogers' Rangers during the Seven Years' War. In 1789, Rogers settled on his own farm in Prince Edward County. In 1796, he was elected to the 2nd Parliament of Upper Canada representing Prince Edward County. In 1800, he was elected to represent Hastings and Northumberland; he served in the assembly until 1816 and then from 1820 to 1824. He served in the local militia and also served as clerk in the district court. He also served as justice of the peace in the Newcastle District. In 1808, with Thomas Dorland and Peter Howard, he left the assembly to protest an attempt by the government to speed passage of an amendment to the District Schools Act. Lieutenant Governor Sir Francis Gore attempted to punish Rogers for this action but Rogers' actions were upheld on review and he returned to Parliament in 1820.