我有类似的事情
...
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
我该怎么做?我可以使用哪种设计模式?
答案 0 :(得分: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();
}
答案 1 :(得分:2)
好吧,既然您使用的是SQL Server,那么保持连接打开并不是一种好的做法。
ADO.Net提供了一项名为ConnectionPooling的功能。打开连接后,它将检查池。如果可以找到具有相同连接字符串的现有连接,则会从池中返回该连接,因此设置时间非常短。
当您关闭连接时,它将返回到池中。
这非常有效,可以非常快速地连接到数据库。
修改
这是关于该主题的MSDN文章。 http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx