【发布时间】:2015-07-08 19:11:16
【问题描述】:
我最近继承了一个 C# Web 应用程序,它为每个查询创建一个新连接,如下所示:
public class QueryForm
{
public bool getStudents()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
conn.Open();
//commands
conn.Close();
}
protected void getProfessors()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
conn.Open();
//Commands
conn.Close();
}
protected void getProfessors()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
conn.Open();
//Commands
conn.Close();
}
}
我知道这通常是最好的方法,但是让构造函数创建连接对象,然后打开每个方法/查询然后像这样关闭该连接是可以接受的还是“最佳实践”:
public class QueryForm
{
SqlConnection conn;
public QueryForm()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
}
public bool getStudents()
{
conn.Open();
//commands
conn.Close();
}
protected void getProfessors()
{
conn.Open();
//Commands
conn.Close();
}
protected void getCourses()
{
conn.Open();
//Commands
conn.Close();
}
}
我更喜欢第二种方式,因为它不会创建多个连接对象。但是,如果我将方法和类设为静态,第一种方法也更可取。
【问题讨论】:
-
你可能想检查这个问题stackoverflow.com/questions/861552/…
-
@Gonzalo -- 参考那篇文章,这张海报没有提到将 SqlConnection 设为静态,只有方法和类。
-
你的问题是什么?
-
@Oluwafemi “让构造函数创建连接对象,然后打开每个方法/查询然后关闭该连接是可以接受的还是“最佳实践””
-
我明白了。抱歉,太困了……
标签: c# sql sql-server