Этот класс сейчас использует функцию пула соединений? - MSSQL 2008 R2 - ASP.net 4.0 - PullRequest
1 голос
/ 24 сентября 2011

Я посмотрел в Интернете, но я не мог понять, что именно пул соединений Это мой класс выполнения запроса. Каждый запрос выполняется этим классом.

Спасибо.

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Web;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;
using System.IO;

public class DbConnection
{
    public static string srConnectionString = "server=localhost;database=mydb;uid=sa;pwd=mypw;";

    public DbConnection()
    {

    }

    public static DataSet db_Select_Query(string strQuery)
    {
        DataSet dSet = new DataSet();

        try
        {
            using (SqlConnection connection = new SqlConnection(srConnectionString))
            {
                connection.Open();
                SqlDataAdapter DA = new SqlDataAdapter(strQuery, connection);
                DA.Fill(dSet);
            }
            return dSet;

        }

        catch (Exception)
        {
            using (SqlConnection connection = new SqlConnection(srConnectionString))
            {
                if (srConnectionString.IndexOf("select Id from tblAspErrors") != -1)
                {
                    connection.Open();
                    strQuery = strQuery.Replace("'", "''");
                    SqlCommand command = new SqlCommand("insert into tblSqlErrors values ('" + strQuery + "')", connection);
                    command.ExecuteNonQuery();
                }
            }
            return dSet;
        }
    }

    public static void db_Update_Delete_Query(string strQuery)
    {
        try
        {
            using (SqlConnection connection = new SqlConnection(srConnectionString))
            {
                connection.Open();
                SqlCommand command = new SqlCommand(strQuery, connection);
                command.ExecuteNonQuery();
            }
        }
        catch (Exception)
        {
            strQuery = strQuery.Replace("'", "''");
            using (SqlConnection connection = new SqlConnection(srConnectionString))
            {
                connection.Open();
                SqlCommand command = new SqlCommand("insert into tblSqlErrors values ('" + strQuery + "')", connection);
                command.ExecuteNonQuery();
            }
        }
    }
}

1 Ответ

1 голос
/ 24 сентября 2011

Да, пулы соединений создаются для connection string.Чтобы предотвратить утечку памяти, вы также должны иметь оператор using вокруг ваших объектов SqlCommand и SqlDataAdapter.

Пул соединений с сервером SQL (ADO.NET)

Пул соединений создается для каждой уникальной строки соединения.Когда пул создается, несколько объектов подключения создаются и добавляются в пул, так что требование минимального размера пула удовлетворяется.Соединения добавляются в пул по мере необходимости, вплоть до указанного максимального размера пула (по умолчанию 100).Соединения возвращаются обратно в пул, когда они закрыты или удалены.

Пример с использованием операторов:

using (SqlConnection connection = new SqlConnection(srConnectionString))
{
    connection.Open();
    using(SqlDataAdapter DA = new SqlDataAdapter(strQuery, connection))
    {
        DA.Fill(dSet);
    }
}

using (SqlConnection connection = new SqlConnection(srConnectionString))
{
    if (srConnectionString.IndexOf("select Id from tblAspErrors") != -1)
    {
       connection.Open();
       strQuery = strQuery.Replace("'", "''");
       using(SqlCommand command = new SqlCommand("insert into tblSqlErrors values ('" + strQuery + "')", connection))
       {
          command.ExecuteNonQuery();
       }
    }
}
...