private void btnTransferir_Click(object sender, EventArgs e) { Conta origem = (Conta)cbOrigem.SelectedItem; Conta destino = (Conta)cbDestino.SelectedItem; if (origem.Numero == destino.Numero) { MessageBox.Show("Origem e destino são iguais."); return; } Double valor = Convert.ToDouble(txtValor.Text); SqlConnection conexao = FabricaConexao.ObterConexao(); SqlTransaction tx = conexao.BeginTransaction(); try { ContaDAO contaDAO = new ContaDAO(conexao, tx); contaDAO.Sacar(origem.Numero, valor); contaDAO.Depositar(destino.Numero, valor); tx.Commit(); MessageBox.Show("Transferência feita com sucesso!"); } catch (Exception ex) { tx.Rollback(); MessageBox.Show("Falha na transferência!"); } finally { FabricaConexao.FecharConexao(conexao); } // Não sacar e transferir para a mesma conta. // Abrir uma conexao e repassar para o DAO junto com a transação. }