add transaction and generalize Exec, Query and Prepare
add test for transaction
add QueryEach