WARNING NAS TRANSACOES

DONGUSTAVOSCCP 30/10/2013 11:34:18
#430530
Alguem sabe o motivo de ocorrer essas duas warnings?

Warning 1 Variable [ô]objtransaction[ô] is used before it has been assigned a value. A null reference exception could result at runtime. G:\PRJ_TCC\pizzaria_kaylane\Dados\Banco.vb 124 17 Dados

Warning 2 Function [ô]ExecuteNonQuery[ô] doesn[ô]t return a value on all code paths. A null reference exception could occur at run time when the result is used. G:\PRJ_TCC\pizzaria_kaylane\Dados\Banco.vb 134 5 Dados

segue a imagem do codigo:

OCELOT 30/10/2013 11:59:02
#430531
Resposta escolhida
O primeiro caso é apenas uma mal interpretação do VB.Net que detecta que o objtransaction pode não ter sido inicializado, mas pelo seu código acredito que isso nunca vá acontecer


O segundo caso é por você ter criado uma Function mas não retorna nenhum valor dela, quando você não precisa retornar valor não use Function, use Sub


Só um detalhe sobre o seu código, é que essa transação sua é basicamente inútil, já que a utilidade de uma transação é de se poder executar vários comandos SQL em uma mesma conexão para só no final, se tudo ocorreu com sucesso você dar um commit e garantir que todos os comandos vão ser gravados, ou caso de um erro você da um rollback e desfaz todos os comandos.

Com um comando só a transação é implícita no SQL Server, se der erro o comando não vai salvar nada de qualquer forma.
DONGUSTAVOSCCP 30/10/2013 12:07:33
#430532
Citação:

:
O primeiro caso é apenas uma mal interpretação do VB.Net que detecta que o objtransaction pode não ter sido inicializado, mas pelo seu código acredito que isso nunca vá acontecer


O segundo caso é por você ter criado uma Function mas não retorna nenhum valor dela, quando você não precisa retornar valor não use Function, use Sub


Só um detalhe sobre o seu código, é que essa transação sua é basicamente inútil, já que a utilidade de uma transação é de se poder executar vários comandos SQL em uma mesma conexão para só no final, se tudo ocorreu com sucesso você dar um commit e garantir que todos os comandos vão ser gravados, ou caso de um erro você da um rollback e desfaz todos os comandos.

Com um comando só a transação é implícita no SQL Server, se der erro o comando não vai salvar nada de qualquer forma.



olá amigo beleza?

então esse codigo é apenas a camada de dados

eu realizo varios comandos nas camadas de negocios pois se trata de um software para pizzaria, faço inclusão simultanea em mais de 1 tabela na classe de pedidos
OCELOT 30/10/2013 13:23:29
#430537
Tudo bem que você faça várias operações em outros lugares com transações, mas nessa função essa transação é inútil e totalmente dispensável, e ela não serve de forma alguma para ser executada várias vezes em seguida se você precisar garantir a integridade dos dados.

Basicamente se ela é uma função para inserir ou alterar dados de apenas uma tabela ela serve mas não precisa da transação.

Uma outra dica, no seu tratamento de exceptions nunca use o [Ô]Throw ex[Ô] como você fez para relançar uma exception, use apenas [Ô]Throw[Ô]
Try
[ô]seu código
Catch ex As Exception
[ô]mais código
Throw
End Try

Digamos que o erro no seu código aconteça na linha [Ô]objSqlCommand.ExecuteNonQuery()[Ô], a diferença entre usar [Ô]Throw ex[Ô] e [Ô]Throw[Ô] é que no primeiro quem tratar esta exception vai receber como se o erro tivesse ocorrido na linha do [Ô]Throw ex[Ô], já se usar o [Ô]Throw[Ô] o erro vai aparecer para quem tratar ele como o original, indicando que o erro aconteceu na linha em que você chamou o [Ô]objSqlCommand.ExecuteNonQuery()[Ô], parece ser coisa insignificante, mas faz bastante diferença na hora de debugar caso ocorra alguma exception.
Tópico encerrado , respostas não são mais permitidas