Solved

C# - the method to get a number of open Sql connections

Posted on 2011-09-05
6
288 Views
Last Modified: 2013-12-17
What would be the best way to create a method which returns the number of open Sql connections?  Let say I'm debugging my code (or even at some points in the code) - i would like to check at some point and make sure that all connections where closed.

SqlConnection connection = new SqlConnection( connectionString)

Thanks
0
Comment
Question by:niceguy971
6 Comments
 
LVL 16

Accepted Solution

by:
Easwaran Paramasivam earned 167 total points
ID: 36486406
Effectively  create your connection object with using statement. While leaving the using block the connection will be closed automatically.

http://weblogs.asp.net/jasonsalas/archive/2005/02/08/368811.aspx

No need to verify whether the connection is open or not. using is your best friend.
0
 

Author Comment

by:niceguy971
ID: 36486446
It's a good approach..but it does NOT answer my original question. Let say... I would like to have a method which returns the number of open Sql connections. How to create such method? It's also very interesting from the theoretical standpoint.

Thanks
0
 
LVL 8

Assisted Solution

by:jagrut_patel
jagrut_patel earned 166 total points
ID: 36486463
There is no built-in support for this that I am aware of. You can try this way.

public class MyDbConnection
{
    private static int connectionCount;

    public MyDbConnection(string connectionString)
    {
        this.DbConnection = new SqlConnection(connectionString);
        this.DbConnection.StateChange += new StateChangeEventHandler(connection_StateChange);
    }


    public SqlConnection DbConnection
    {
        get;
        private set;
    }

    public static int ConnectionCount
    {
        get
        {
            return connectionCount;
        }
    }

    void connection_StateChange(object sender, StateChangeEventArgs e)
    {
        if (e.CurrentState == ConnectionState.Open)
            connectionCount++;
        else if (e.CurrentState == ConnectionState.Closed)
            connectionCount--;
    }
}

Open in new window


Usage

string connectionString = "Your connection string";

MyDbConnection conn1 = new MyDbConnection(connectionString);
conn1.DbConnection.Open();
//conn1.DbConnection.Close();

MyDbConnection conn2 = new MyDbConnection(connectionString);
using (conn2.DbConnection)
{
    conn2.DbConnection.Open();
}

MyDbConnection conn3 = new MyDbConnection(connectionString);
conn3.DbConnection.Open();
//conn3.DbConnection.Close();

MyDbConnection conn4 = new MyDbConnection(connectionString);
conn4.DbConnection.Open();
conn4.DbConnection.Close();

MessageBox.Show(MyDbConnection.ConnectionCount.ToString()); 

Open in new window


HTH!
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 16

Expert Comment

by:Easwaran Paramasivam
ID: 36486477
Really intresting!! But using the 'using' keyword requires no need to verify this extra work. That is the best practice. No connection or memory leak will happen. We have used in our real project and found good improvement in performance as well.
0
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 167 total points
ID: 36492610
I totally agree with EaswaranP: if you're following best practices, you shouldn't need to count the number of connections  ; )


To answer your specific question, you might try this, though I can't say I've used it myself:  http://fuchangmiao.blogspot.com/2009/03/sql-server-open-connections-exist-in.html
0
 

Author Closing Comment

by:niceguy971
ID: 36532936
Thanks
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
C# Comparing String Arrays. 5 39
EF5: Question about Metadata Artifact Processing 4 15
Store results in vb.net 3 20
Convert datetime to time string 10 19
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now