none
SQLConnection - Exceptions RRS feed

  • Pergunta

  • Eu posso forcar um fechamento da conexao sql atraves de 2 formas (Using e Finally (Try/Catch).
    Gostaria de usar using, mas se alguma excessao for lancada, eu nao estarei tratando a mesma.

    Seria o Try/Catch melhor entao ?
    Qual a melhor pratica ?

    1. Using

    using (SqlConnection connection = new SqlConnection(connectionString))
        {
            int employeeID = findEmployeeID();
    
            connection.Open();
            SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
            command.CommandTimeout = 5;
    
            command.ExecuteNonQuery();
        }

    2. Try/Catch/Finally

    SqlCommand cmd = new SqlCommand();
    cmd.Connection = new SqlConnection("YOUR_CONNECTION_STRING");
    cmd.CommandText = "SELECT * FROM ....";
    
    try{
    
        cmd.Connection.Open();
        try{
    
            SqlDataReader reader = cmd.ExecuteReader();
            // ....
        
        }finally{
            cmd.Connection.Close();
        }
    
    } catch (SqlException ex){
    
        // ex.Class contains the ErrorCode, depends on your dataprovider ofcourse
    
        // You can retrive it
        foreach (SqlError error in ex.Errors){
            // error.LineNumber
            // error.Message
            // ...
        }
    }  

    sexta-feira, 8 de junho de 2018 15:07

Todas as Respostas

  •  Então o using executará o comportamento implementado em dispose da classe que implementou IDisposable se houver ou não houver exceção, segundo a documentação. Para tratamento de erros deve ser utilizado o bloco try catch, os recursos citados servem para finalidades diferentes.
    sexta-feira, 8 de junho de 2018 16:26
  • Boa tarde.

    O colega Conrado esclareceu bem.

    Eu utilizo em 99% das vezes o try/catch.


    MARIANO1776

    sexta-feira, 8 de junho de 2018 16:39