Its a common mistake so its worth checking. Click on your connection on the form and make sure that Connected = False. It doesn't hurt if the path to the database is filled out. Otherwise you have to set it by code at runtime instead.
The connection and transaction is opened automatically when you call ExecSQL. As far as I understand you dont have to do that manually. In some situations it might be useful though, not sure.
So set the SQL statement, assign the param values and then call ExecSQL and Commit.