2013-11-24 4 views
2

Я просто хочу знать, правильно ли я использовал «использование» в моем CRUDStudentTable().Правильный способ использования «использования» на моем коде

private string Query; 
public string message; 

public CRUD(string myQuery) 
{ 
    Query = myQuery; 
} 

public void CRUDStudentTable() 
    { 
      using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Microsoft User\Desktop\Student.accdb")) 
      { 
       try 
       { 
        conn.Open(); 
        using (OleDbCommand cmd = new OleDbCommand(Query, conn)) 
        { 
         cmd.ExecuteNonQuery(); 
        } 
       } 
       catch (Exception exception) 
       { 
        message = exception.Message; 
       } 
       finally 
       { 
        conn.Close(); 
       } 
      } 
    } 

public string HasError() 
    { 
     if (string.IsNullOrEmpty(message)) 
     { 
      message = "Successful"; 
      return message; 
     } 
     else 
     { 
      return message; 
     } 
    } 

Если это не так, любезно дайте мне совет, как это сделать правильно. Спасибо.

Я включил здесь другой метод, который возвращает «сообщение» всякий раз, когда он не равен нулю.

+3

Избавьтесь от всего блока 'try'. – SLaks

+0

Я использовал блок try, чтобы поймать ошибки. – noviceKid

ответ

5

Это своего рода подход «пояс и подтяжки»: вы должны использовать либо using, либо finally, но не оба.

Блок using гарантирует закрытие соединения во всех кодах, в том числе с исключениями. Поэтому вы можете переписать код следующим образом:

public void CRUDStudentTable() 
{ 
     using (OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Microsoft User\Desktop\Student.accdb")) 
     { 
      try 
      { 
       conn.Open(); 
       using (OleDbCommand cmd = new OleDbCommand(Query, conn)) 
       { 
        cmd.ExecuteNonQuery(); 
       } 
      } 
      catch (Exception exception) 
      { 
       message = exception.Message; 
       // Consider re-throwing the exception here 
       // to let callers know what happened. 
       // Silently harvesting the message and continuing 
       // is not a good practice of handling exceptions. 
      } 
     } 
} 
+1

Возможно, также стоит упомянуть, что 'catch (исключение исключения) { message = exception.Message; } 'будет считаться плохой практикой – zerkms

+0

, это отличный совет, спасибо. :) – noviceKid

+0

@zerkms не обязательно, все зависит от того, что происходит с 'message'. Я делал подобное в ситуациях «WCF», когда разрешающее исключение для создания пузырей вызывало ошибку в канале «WCF», когда у меня есть другие способы сообщения об ошибке без нарушения канала. –

Смежные вопросы