在我目前正在编写的整个程序中,我意识到每当我需要访问SQL Server时,我只需键入queryString并使用C#中的SqlCommand和SqlConnection执行查询。在程序的某个时刻,我甚至打开了一个连接,并在";"for loop";。
程序不断打开紧密连接是否不健康?
***我不太熟悉这个术语,因此你可能在理解我所说的内容时遇到了一些问题:
经常这样做是否会导致任何问题?:
string queryString = "Some SQL Query";
public void(){
SqlConnection con = new Connection(conString);
SqlCommand cmd = new SqlCommand(queryString,con);
cmd.Parameters.AddWithValue("@SomeParam",someValue);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
我几乎在创建的每个类中都使用这个模板(通常是从数据表中获取、更新、插入数据(。嗯,它有害吗?
简单的答案是肯定的——不断打开和关闭连接是低效的。打开一个实际的连接是一个非常昂贵的过程,在连接需要的生命周期(通常是使用它的应用程序或进程的生命周期(内管理连接充满了错误。
这就是很久以前引入连接池的原因。应用程序下面有一个层,它将以更有效的方式管理连接的物理打开/关闭。这也有助于防止打开的连接丢失并继续保持打开(这会导致很多问题(。默认情况下,池是启用的,所以你不需要做任何事情来使用它
使用池-您可以编写代码来打开连接,并在特定代码段使用它,然后关闭它。如果连接池有一个打开但未使用的连接,它将重用它,而不是打开一个新的连接。关闭连接时,只需将连接返回到池,并使其可用于下一次打开尝试。您还应该熟悉c#using语句。