我使用sqlConnection的using语句.它对性能有好处,因为强制调用Dispose()会更快地释放与池的连接.
但是,我意识到在使用中创建的对象无法重新定义.我不能这样做:
using (sqlConnection connection = new sqlConnection(connectionString)) { connection.Open(); //... connection = new sqlConnection(connectionString2); //... connection = new sqlConnection(connectionString3); }
我想知道我是否可以替换使用,并做这样的事情:
{ sqlConnection connection = new sqlConnection(connectionString); connection.Open(); //... connection = new sqlConnection(connectionString2); //... connection = new sqlConnection(connectionString3); }
解决方法
不,在第二个例子中,事情不会自动清理(实际上,使用您拥有的代码,您将保持几个连接处于打开状态).
不仅如此,如果在使用块内抛出异常,您将失去自动清理功能.请记住,使用块分解为:
sqlConnection connection = new sqlConnection(connectionString); try { connection.Open(); // Do work } finally { connection.Dispose(); }
如果你真的使用不同的连接,并且每个连接在块的末尾都是Disposed,我将使用几个使用块:
using(sqlConnection connection = new sqlConnection(connectionString)) { connection.Open(); // Do Work } // First connection is disposed using(sqlConnection connection = new sqlConnection(connectionString2)) { // Do More Work } // Second connection is disposed using(sqlConnection connection = new sqlConnection(connectionString3)) { // Do More Work } // Last connection is dipsosed