C# dbConn.openinside使用 using中的dbConn.Open()将使用不同的连接池吗 如果问题1为真,并且代码到达返回值,则此代码是否会使2打开连接挂起
它将创建一个新连接,当使用块到达末尾时,该连接将被丢弃。 当您不再需要连接时,如果在using块中有更多的内容,但using块将处理这些,那么最好关闭连接 当代码到达返回值时,它将退出using语句,然后进行处理。它并不是像你所要求的那样返回并且没有结束。 一旦执行离开该范围,就会调用dispose。 即使出现异常,也会调用Dispose using块被编译成try-catch-finally块,finally始终被执行,finally包含Dispose using中的dbConn.Open()将使用不同的连接池吗 只有一个“连接池” 如果问题1为真,并且代码到达返回值,则此代码是否会使2打开连接挂起 问题1是错误的,但实际情况如下:C# dbConn.openinside使用 using中的dbConn.Open()将使用不同的连接池吗 如果问题1为真,并且代码到达返回值,则此代码是否会使2打开连接挂起,c#,connection-pool,C#,Connection Pool,它将创建一个新连接,当使用块到达末尾时,该连接将被丢弃。 当您不再需要连接时,如果在using块中有更多的内容,但using块将处理这些,那么最好关闭连接 当代码到达返回值时,它将退出using语句,然后进行处理。它并不是像你所要求的那样返回并且没有结束。 一旦执行离开该范围,就会调用dispose。 即使出现异常,也会调用Dispose using块被编译成try-catch-finally块,finally始终被执行,finally包含Dispose using中的dbConn.Open()
- using语句中的代码创建连接对象
- 调用
时,connection对象会从池中请求现有的数据库连接,如果池中没有数据库连接,则会创建一个数据库连接(可能是池实际创建的,但这是一个实现细节)Open()
- 当块结束(或抛出异常)时,using块超出范围,连接对象被释放,从而关闭并释放数据库连接
因此,只有一个连接对象和一个数据库连接。当using块超出范围时(通过完成或我抛出异常),它会自动处理。不同于什么?对于问题#1,我的意思是它会打开另一个连接吗?@juharr如果连接打开,你会得到一个exception@RaoHammas使用语句可确保连接将被关闭和释放,没必要close@Mrky正确,由于using语句,它将在超出范围时关闭并处理。我建议你多读一些。它会创建一个新的连接对象,但是你忽略了问题的池方面。
using (IDbConnection dbConn = new System.Data.SqlClient.SqlConnection(ConnectionString))
{
dbConn.Open();
...
return result;
}