2013-05-26 2 views
1

herehere에서 다음 코드를 복사했습니다. 나는 다음 코드에 대한 예외 처리가 필요하다는 것을 알고 싶습니까? DB 연결이 닫히기 전에 예외가 발생하면 어떤 일이 일어나면 여기에 try-catch이 중요하다고 생각합니다.다음 코드에서는 예외 처리가 중요합니다.

의견을 말 하시겠습니까? 시도 ... 결국 그래서 둥지에 의미가로

using System; 
using System.Data; 
using System.Data.SqlClient; 


class OutputParams 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 

    using(SqlConnection cn = new SqlConnection("server=(local);Database=Northwind;user id=sa;password=;")) 
    { 
     SqlCommand cmd = new SqlCommand("CustOrderOne", cn); 
     cmd.CommandType=CommandType.StoredProcedure ; 

     SqlParameter parm= new SqlParameter("@CustomerID",SqlDbType.NChar) ; 
     parm.Value="ALFKI"; 
     parm.Direction =ParameterDirection.Input ; 
     cmd.Parameters.Add(parm); 

     SqlParameter parm2= new SqlParameter("@ProductName",SqlDbType.VarChar); 
     parm2.Size=50; 
     parm2.Direction=ParameterDirection.Output; 
     cmd.Parameters.Add(parm2); 

     SqlParameter parm3=new SqlParameter("@Quantity",SqlDbType.Int); 
     parm3.Direction=ParameterDirection.Output; 
     cmd.Parameters.Add(parm3); 

     cn.Open(); 
     cmd.ExecuteNonQuery(); 
     cn.Close(); 

     Console.WriteLine(cmd.Parameters["@ProductName"].Value); 
     Console.WriteLine(cmd.Parameters["@Quantity"].Value.ToString()); 
     Console.ReadLine(); 
    } 
} 

답변

2

using 지시어가 확장되는 시도 ... catch 블록 내부.

P.S : 결국 cn.Close()을 사용할 필요가 없습니다.

+0

그래서 try-catch 블록이 필요하다는 것을 의미하며 finally 절에서 연결을 닫을 수 있습니까? –

+0

다음 링크를 참조하십시오. http://stackoverflow.com/questions/13082590/c-using-directive-and-try-catch-block – naveen

+1

@sharonHwk try/catch/finally가 필요하지 않습니다. 그냥'using'을 사용하고'cn.Close()'를 호출하지 마십시오. –

관련 문제