What is connection pooling in C# and how to achieve it?

Connection pooling in C# is a technique that improves database application performance by reusing database connections rather than creating new ones for each request. When a connection is closed, it's returned to a pool for future use instead of being destroyed.

The .NET Framework automatically manages connection pooling for ADO.NET connections. When you use the using statement with database connections, it ensures proper disposal and automatic participation in connection pooling.

How Connection Pooling Works

Connection Pool Lifecycle Application Connection Pool Available | Busy Database Request Connect Return 1. App requests connection 2. Pool provides available connection 3. Connection returned to pool when disposed

The connection pool maintains a set of physical database connections. When your application requests a connection with the same connection string, the pool returns an available connection rather than creating a new one.

Using Connection Pooling with 'using' Statement

The using statement ensures proper disposal of database connections, which automatically returns them to the connection pool −

Example

using System;
using System.Data.SqlClient;

class Program {
   static void Main() {
      string connString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;";
      
      using (SqlConnection conn = new SqlConnection(connString)) {
         SqlCommand cmd = conn.CreateCommand();
         cmd.CommandText = "SELECT CustomerId, CompanyName FROM Customers";
         conn.Open();

         using (SqlDataReader dr = cmd.ExecuteReader()) {
            while (dr.Read()) {
               Console.WriteLine("{0}\t{1}", dr.GetString(0), dr.GetString(1));
            }
         }
      } // Connection automatically returned to pool here
      
      Console.WriteLine("Connection disposed and returned to pool");
   }
}

The output of the above code is −

ALFKI   Alfreds Futterkiste
ANATR   Ana Trujillo Emparedados y helados
ANTON   Antonio Moreno Taquería
Connection disposed and returned to pool

Configuring Connection Pool Settings

You can control connection pooling behavior through connection string parameters −

Example

using System;
using System.Data.SqlClient;

class Program {
   static void Main() {
      string connString = "Data Source=localhost;" +
                         "Integrated Security=SSPI;" +
                         "Initial Catalog=TestDB;" +
                         "Pooling=true;" +
                         "Min Pool Size=5;" +
                         "Max Pool Size=100;" +
                         "Connection Timeout=30;";
      
      using (SqlConnection conn = new SqlConnection(connString)) {
         conn.Open();
         Console.WriteLine("Connection State: " + conn.State);
         Console.WriteLine("Database: " + conn.Database);
      }
      
      Console.WriteLine("Connection returned to pool with custom settings");
   }
}

The output of the above code is −

Connection State: Open
Database: TestDB
Connection returned to pool with custom settings

Connection Pool Parameters

Parameter Description Default Value
Pooling Enables or disables connection pooling true
Min Pool Size Minimum number of connections in pool 0
Max Pool Size Maximum number of connections in pool 100
Connection Lifetime Maximum age of connection in seconds 0 (no limit)

Benefits of Connection Pooling

  • Performance improvement − Eliminates the overhead of creating new connections

  • Resource management − Limits the number of concurrent database connections

  • Automatic management − .NET handles pool creation and cleanup automatically

  • Scalability − Supports multiple concurrent requests efficiently

Conclusion

Connection pooling in C# automatically manages database connections for better performance and resource utilization. By using the using statement with ADO.NET connections, you ensure proper disposal and automatic participation in connection pooling without additional code complexity.

Updated on: 2026-03-17T07:04:36+05:30

970 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements