la cosa es que la transaccion la estas manejando por cada insercion individual y no en el ciclo que inserta...
es decir, si tienes cinco elementos, manejas cinco transacciones, cinco veces abres la conexion, cuando deberia ser una sola vez...

saludos!
disculpas, creo que me tarde mucho en enviar el texto, jejejeeje