gpt4 book ai didi

C# sql 创建一个连接并为每个查询打开和关闭

转载 作者:太空狗 更新时间:2023-10-29 22:15:56 25 4
gpt4 key购买 nike

我最近继承了一个 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();
}
}

我更喜欢第二种方式,因为它不会创建多个连接对象。但是,如果我要将方法和类设为静态,则第一种方法也更可取。

最佳答案

其中任何一个都可以接受。 SqlConnection 使用连接池,因此它不会对性能产生太大影响。拥有多个 SqlConnection 对象不会有任何坏处。这归结为偏好。

如果您将连接保留在方法中,我建议将命令封装在 using 语句中,例如:

using (SqlConnection conn = new SqlConnection(...))
{
conn.Open();
//commands
conn.Close();
}

这确保正确处理连接。

关于C# sql 创建一个连接并为每个查询打开和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31301634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com