2013-10-17 108 views
2

請考慮一段代碼:DB2連接池

static string GetUser(int id) 
    { 
     Console.WriteLine("Start get -> {0}", id); 

     var connb = new DB2ConnectionStringBuilder(ConfigurationManager.ConnectionStrings["DB2_USER"].ConnectionString); 
     connb.Pooling = true; 
     connb.MinPoolSize = 10; 
     connb.MaxPoolSize = 100; 

     var conn = new DB2Connection(connb.ConnectionString); 

     var cmd = new DB2Command("SELECT name FROM USR.USERS WHERE id = @id"); 
     cmd.Parameters.Add("@id", id); 
     cmd.Connection = conn; 

     conn.Open(); 

     // conn.IsConnectionFromPool <-- false 

     var reader = cmd.ExecuteReader(); 
     var result = string.Empty; 
     while(reader.Read()) 
      result = reader.GetString(0); 

     conn.Close(); 
     conn.Dispose(); 

     Console.WriteLine("End get <- {0} {1}", id, result); 

     return result; 
    } 

的IBM .NET數據庫驅動程序此示例中使用。

雖然連接字符串明確定義連接池設置,但屬性IsConnectionFromPool從不爲真。

這是否真的意味着數據庫驅動程序不爲我的情況維護池? 在這種情況下,.NET驅動程序設置應該以某種方式進行調整嗎?

回答

2
connb.Pooling = true; 
    connb.MinPoolSize = 10; 
    connb.MaxPoolSize = 100; 

在超過MinPoolSize同時連接後啓用池化。

+0

確實!我對MinPoolSize的解釋是'關閉後不會銷燬的連接對象的數量,因此可供重用'。所以我期望即使是第一個將處理'連接池'商店。 –