It's because the transaction belongs to the connection called con, created in about line 5 of your code. However, the OracleDataAdaptor is not associated with that connection. You give it the connection string and not the connection. This means that it will create its own connection.
You then give this adaptor the transaction associated with the previous connection. This won't work! You have to associate the data adaptor with same connection as the transaction. You could either associate trhe adaptor with the original connection, or create the transaction from the adaptor's connection; one or the other will work.
Cheers -