2013-03-19 1 views
-2

실제로 데이터베이스 연결은 다음과 같습니다. 이제 연결 풀링을 소개하고자합니다. 당신은 connection pooling 메커니즘의 이점을 얻을 특정 작업을 수행 할 필요가 없습니다연결 C#의 Windows Forms에서 풀링

public static string dbpath() 
    { 
     try 
     { 
      string strcon = @"Data Source=local\SQLEXPRESS;Initial Catalog=aniv;Integrated Security=True"; 
      SqlConnection con = new SqlConnection(strcon); 
      if (con.State == ConnectionState.Open) 
      { 
       con.Close(); 
      } 
      con.Open(); 
      return strcon; 
     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show(ex.Message); 
      return "0"; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      return "0"; 
     } 

    } 
+0

연결 풀링은 기본적으로 사용됩니다. 'con.Open()'/''con.Close();'와 물리적 인 연결을 혼동하지 마십시오. 후드 .NET에서 적절하게 관리합니다. –

+0

자세히 ..., –

+0

[SQL Server 연결 풀링 (ADO.NET)] (http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx) – Habib

답변

0

, 내가 이것을 위해 작성하는 방법 ... 알 수 있습니다. 귀하의 코드를 약간 변경해야하지만
:

먼저, 열린 연결

SqlConnection con = new SqlConnection(strcon); 
// Has been created here, it is always closed 
//if (con.State == ConnectionState.Open) 
//{ 
// con.Close(); 
//} 

초 동안 코드에서 체크를 제거 연결 개체가 아닌 연결 문자열을 반환 할 수 있습니다.

public static SqlConnection dbconnection() 
{ 
    string strcon = @"Data Source=local\SQLEXPRESS;Initial Catalog=aniv;Integrated Security=True"; 
    SqlConnection con = new SqlConnection(strcon); 
    con.Open(); 
    return con; 

} 

이것은 당신이 창조를 작성할 수 있습니다 (I는 예외적 인 경우가이보다 더 최고 수준의 절차에 의해 처리되는 경우가 더 낫다고 생각 나는 또한 try/catch 블록을 제거했는지에 주목) 예외가 발생한 경우에도 연결 개체를 올바르게 닫고 처리 할 수 ​​있도록 using statement 으로 연결을 여는 것이 좋습니다.
그래서, 당신은 고객의 DataTable을로드해야 가정하면, 당신은 한계 아래 풀에서 연결의 수를 유지하는 것이

using(SqlConnection cn = dbconnection()) 
{ 
    string sqlText = "SELECT * FROM Customers ORDER BY CustomerName"; 
    SqlCommand cmd = new SqlCommand(sqlText, con); 
    DataTable dtCustomers = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dtCustomers); 
    // Do what you want with the datatable (bind to a grid, return to do more processing... 
} 

다음처럼 작성할 수 있으며, 프로그램은에 관해서 제대로 작동합니다 연결 풀

+0

코드를 사용하여 어디에서 작성합니까?; –

+0

데이터를 검색, 업데이트, 삭제해야 할 때마다. 나는 지금 대답을 업데이트 할 것이다. – Steve

0

더 많은 참조 : ADO.NET Connection Pooling

모든 연결 풀은 별개의 연결 문자열과 관련된 너무 것을, 그것은 응용 프로그램에 따라 다릅니다된다.

연결을 처음 열면 해당 연결 풀의 연결 문자열과 연결하는 정확한 일치 알고리즘을 기반으로 연결 풀이 만들어집니다. 풀링 관련 키워드와

샘플 연결 문자열 : 최대 풀 사이즈에 도달 할 때까지

initial catalog=Northwind; Data Source=localhost; Connection Timeout=30; 
User Id=MYUSER; Password=PASSWORD; Min Pool Size=20; Max Pool Size=200; 
Incr Pool Size=10; Decr Pool Size=5; 

이 방법은 새 연결이 풀에 추가 계속 ADO.NET 추가 연결 요청을 받으면 그 후 , 연결 시간 초과 시간 기다린 다음 오류가 발생합니다.

일단 목적을 달성 한 연결을 닫거나 처분 할 것을 적극 권장합니다.

동일한 구성의 연결 만 풀링 할 수 있습니다.

장애 조치 (failover)와 같은 치명적인 오류가 발생하면 풀이 자동으로 지워집니다.

연결 문자열은 연결 풀링에서 중요한 역할을합니다.