Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否为每个查询创建新的sql连接?_C#_Sql_Multithreading_Connection - Fatal编程技术网

C# 是否为每个查询创建新的sql连接?

C# 是否为每个查询创建新的sql连接?,c#,sql,multithreading,connection,C#,Sql,Multithreading,Connection,我正在编写一个与本地sql server通信的服务器应用程序 每个客户端都需要向数据库读取或写入数据 是否最好有一个线程安全类,它将在单个sql连接上排队并执行sql命令?还是应该为每个命令打开一个新连接?这对性能有很大影响吗?通常,您应该为每个命令创建一个新连接,并利用内置的连接池。如果您使用的是任何类型的ADO.NET,连接池将自动使用(至少在SQL Server中),除非您显式禁用它,所以没有理由对此做任何特别的事情 请务必记住在每次使用后关闭连接-这将简单地将连接返回到连接池。如果有一批

我正在编写一个与本地sql server通信的服务器应用程序

每个客户端都需要向数据库读取或写入数据


是否最好有一个线程安全类,它将在单个sql连接上排队并执行sql命令?还是应该为每个命令打开一个新连接?这对性能有很大影响吗?

通常,您应该为每个命令创建一个新连接,并利用内置的连接池。

如果您使用的是任何类型的ADO.NET,连接池将自动使用(至少在SQL Server中),除非您显式禁用它,所以没有理由对此做任何特别的事情


请务必记住在每次使用后关闭连接-这将简单地将连接返回到连接池。

如果有一批语句必须在彼此之后执行,则应使用相同的SqlConnection。 一旦您不再需要SqlConnection,并且不知道何时需要再次连接,就应该关闭连接

因此,例如,如果必须依次执行两条insert语句和一条update语句,则应使用相同的SqlConnection。
这里最重要的优点是,您可以在必要时将这些语句放入事务中。无法通过帐户连接共享事务

使用完数据库后,可以关闭连接。默认情况下,使用连接池,连接将返回到池中,以便下次需要连接到数据库时可以重用。
连接生存期应该很短,但不应该为每个DbCommand使用单独的连接。

我假设每个客户端一次执行一个命令。所以我不知道什么是坏习惯