gpt4 book ai didi

c# - sql进程的行为如何?

转载 作者:行者123 更新时间:2023-12-02 05:11:12 26 4
gpt4 key购买 nike

在我的 C# 程序中,我打开了 sql 连接并对表进行了一些更新。之后我关闭连接。而且,如果我在 Management Studio 中的事件监视器下检查,则会创建新进程,即使我关闭了程序的 sql 连接,该进程仍然存在于事件监视器中。我可以知道这个过程的行为吗?我们是否需要明确清除这些进程?谢谢。

最佳答案

我认为您在这里错误地使用了过程 的概念。

ADO.NET 使用 connection pool .这意味着当您在 SqlConnection 实例上调用 Open 方法时,您并没有打开一个新的数据库物理连接,您只是从现有的池中提取一个。当您调用 Close 时,您并没有关闭连接,您只是将它返回到连接池以供重用。

连接池存在于您的应用程序进程中,并且是每个连接字符串。

Do we need to clear these processes explicitly?

不,您所要做的就是确保您已将所有 IDisposable 资源(例如连接和命令)包装在 using 语句中。这样,您甚至不需要显式调用 Close 方法,代码将确保即使在出现异常的情况下也能正确处理所有内容:

string connectionString = ...
using (var conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT id FROM foo";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
int id = reader.GetInt32(reader.GetOrdinal("id"));
Console.WriteLine(id);
}
}
}

关于c# - sql进程的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426846/

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