Ir para conteúdo

POWERED BY:

Arquivado

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

drigo

[Resolvido] Problemas com "Begin Transaction...Commit " n

Recommended Posts

Olaaa...

 

Estou tento um erro na criação de um método que realiza o processo de " Begin Transaction...Commit" de uma sentença SQL, nesse caso uma sentença de Update. O erro gerado pela linha "cmd.Transaction = transacao;" mostra a seguinte mensagem: "Property or indexer 'Oracle.DataAccess.Client.OracleCommand.Transaction' cannot be assigned to -- it is read only ...".

 

 

public void AtualizarDados(string dados){

    string ConnectionString = "...";
    
    OracleConnection conexao = new OracleConnection();

    OracleTransaction transacao=null;
 
    OracleCommand cmd = null;

        try{

            conexao.ConnectionString = ConnectionString;
            conexao.Open();

            transacao = conexao.BeginTransaction();
            cmd = new OracleCommand(dados);
            
            cmd.Connection = conexao;

             //-----------------------------------------------------------------------

            //Especifica o OracleTransaction dentro do qual o OracleCommand executa...
              cmd.Transaction = transacao; //LINHA ONDE ERRO É GERADO ...

            //------------------------------------------------------------------------

            cmd.ExecuteNonQuery();

            transacao.Commit();      

        }
        catch(Exception Edel){

            transacao.Rollback();
        }

        finally{

            if (transacao != null)
            {
                
                transacao.Dispose();
            }

            if(conexao!=null){

                conexao.Close();
            }
          
        }

Porque o respectivo ERRO, se justamente com o "cmd.Transaction = transacao;" eu especifico a Transação no qual o Comando Oracle irá executar ?? Houve algum erro nessa especificação ??

 

 

Desde já, Agradeçoo...

Abraçoo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução foi a que eu postei ou outra? Se for outra poste ela.

 

Abraços...

 

Caro quintelab eu tive o mesmo problema e fiquei muito frustrado que o nosso amigo não colocou a solução que ele encontrou. Pesquisei mais e também cheguei a uma conclusão e vou postar aqui para melhorar um pouco mais o tópico.

 

O problema está no driver do Oracle. Oracle Database driver 10.1.0.2.0 para Oracle 10g.

 

Ele não suporta a sintaxe

 

OracleConnection conn = new OracleConnection(....);
OracleTransaction trans = conn.BeginTransaction();
OracleCommand command = new OracleCommand(sqlquery);
command.Transaction = trans; // Linha que estava dando erro.
....

....

....

 

Segue o código que funcionou comigo.

 

OracleConnection conn = new OracleConnection(....);
OracleTransaction trans = conn.BeginTransaction();
OracleCommand command = conn.CreateCommand();
command.CommandText = sqlquery;

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.