0

我有类似的东西

...
public DataTable GetList()
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();      
        // select from table 
    }
}

public void Insert()
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();      
        // Insert into table
    }
}

...

有没有办法将连接字符串定义为全局变量,并在操作后处理它?

// connection open

...

public DataTable GetList()
{
    // use global connection
}

public void Insert()
{
    // use global connection
}

...

// connection close

我怎样才能做到这一点?我可以使用哪种设计模式?

4

2 回答 2

3

这是可能的

 public class MyClass:IDisposable
{
    SqlConnection myCon;

    public MyClass() 
    {
        myCon = new SqlConnection(connectionString);
    }

    public DataTable GetList()
    {
        // use global connection
    }

    public void Insert()
    {
        // use global connection
    }



    public void Dispose()
    {
        myCon.Close();
    }
}

使用:

 using (MyClass myclass = new MyClass())
        {
           DataTable dt = myclass.GetList();
        }
于 2013-02-14T14:08:04.737 回答
2

好吧,由于您使用的是 SQL Server,因此保持连接处于打开状态并不是一种好的做法。

ADO.Net 提供了一个称为 ConnectionPooling 的功能。打开连接后,它将检查池。如果可以找到具有相同连接字符串的现有连接,则将其从池中返回,因此设置时间非常短。

当您关闭连接时,它会返回到池中。

这非常有效,并且可以非常快速地连接到数据库。

编辑

这是有关该主题的 MSDN 文章。http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

于 2013-02-14T13:56:40.217 回答