Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clauido José

Transaction

Recommended Posts

Pessoal estou ralando aqui no C# olha senário tenho uma tabela Contas nela tenho contaA e ContaB eu tenho que tirar 100 da contaA e depositar na contaB estou fazendo da seguinte maneira

private void button6_Click(object sender, EventArgs e)
        {
            //Definir conexao com banco
            SqlConnection cn = new SqlConnection();

            // passar a conexão para connection string
            cn.ConnectionString = "Data Source=THACKA\\SQLEXPRESS;Initial Catalog=LojaSql;Persist Security Info=True;User ID=sa;Password=sa";

            //Definir o comando para contaA
            SqlCommand cmdA = new SqlCommand("UPDATE Contas SET saldo = saldo - 100 where contas = 'contaA'");

            //Definir o comando para contaB            
            SqlCommand cmdB = new SqlCommand("UPDATE Contas SET saldo = saldo + 100 WHERE contas = 'contaB'");

            //Definir a trasanção
            SqlTransaction tx = null;
            try 
	        {	        
                //Abrir a conexao
		        cn.Open();

                //Abrir a transação
                tx = cn.BeginTransaction();

                //Associar os comandos  à transação
                cmdA.Transaction = tx;
                cmdB.Transaction = tx;
                
                //Execultar os camandos de transação
                cmdA.ExecuteNonQuery();
                cmdB.ExecuteNonQuery();

                //como não ocorreu erro,
                //confirmar a transação
                tx.Commit();

                exemploLabel.Text = "Transferencia ocoreu com sucesso!";
                exemploLabel.ForeColor = Color.Blue;
	        }
	        catch (Exception ex)
	        {
		        //como ocorreu erro 
                //cancelar a transação
                tx.Rollback();

                exemploLabel.Text = ex.Message;
                exemploLabel.ForeColor = Color.Red;
	        }
            finally
            {
                if (cn.State != ConnectionState.Closed) { cn.Close(); }
            }
        }

Ele esta dando o seguinte erro quando execuldo cmdA.ExecuteNonQuery(); o seguinte erro: "ExecuteNonQuery: propriedade Connection não foi inicializada."

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tens duas hipóteses:

Quando crias o objecto SqlCommand associas logo o objecto SqlConnection:

SqlCommand cmdA = new SqlCommand("texto da query", cn);

Ou utilizas a propriedade Connection após instanciar o objecto:

cmdA.Connection = cn;

Mais informação aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.