2016-01-25 24 views
1

這是我從數據庫中選擇數據功能:新的DbConnection性能

public DataTable SelectDataTable(string selectStatement, string connectionString) 
    { 
     using (var oracleConnection = new OracleConnection(connectionString)) 
     { 
      using (var command = new OracleCommand(selectStatement, oracleConnection)) 
      { 
       return SelectDataTable(command); 
      } 
     } 
    } 
    public DataTable SelectDataTable(OracleCommand command) 
    { 
     var result = new DataTable(); 

     try 
     { 
      var adapter = new OracleDataAdapter(command); 
      adapter.Fill(result); 
     } catch (OracleException ex) 
     { 
      throw NewDatabaseException("Error on fill data table.", command.CommandText, ex); 
     } 

     return result; 
    } 

我常常調用這個函數,我有點害怕,可以有性能問題,因爲我仍然在創造新的DbConnection。克里特只有一個DbConnection,將其存儲在現場並使用多時間更好嗎?

+1

根據MSDN *當請求OracleConnection對象時,如果可用連接可用,則從池中獲取它。* – tchelidze

+1

在需要時創建新連接並在使用後儘快關閉連接是正常的。你的代碼示例符合這一點,所以不,我不會擔心性能,直到你有性能問題的證據。 – user1666620

回答

1

在您的連接字符串中將MinPoolSize設置爲大於0的值,因此不會創建新連接,而是從現有連接池中取出。還要將MaxPoolSize設置爲高於MinPoolSize。