2011-12-12 64 views
0

我在考虑构建一个方法,我可以通过connString来生成我的SqlConnection正在考虑构建一个SqlConnection方法......这是一个坏主意吗?

这是一个坏主意吗?如果我将自己的电话打包在他们自己的using (SqlConnection声明中,它会更好吗?

我们遇到了另一个应用程序的问题,其中一个开发人员传递了连接并保持打开状态,这导致了很多悲伤。

只是想问问专家之前尝试可能导致问题的事情。

+2

显示你的计划如何使用它的一个例子。 – Yuck

+0

与现有功能相比,这是一个非常好的主意。问题是:它够了吗?我与@Yuck:让我们看看你想如何使用它。 –

+0

构建一个DataAccess类库,该类库公开实体或方法(如GetTable,ExecuteCommand等),但不会将此类类库的任何细节公开给调用业务逻辑或UI(如果您懒惰并且不想创建BL类库)。在DataAccess类中,如前所述,在每个连接周围使用,当您检索DataReader时,您不能在连接周围使用using,但可以创建读取器关闭时关闭连接的读取器,在调用代码中放置在读者身边使用。 –

回答

0

这是我用的是常见的模式,我认为这是很好的:

using (var cn = new SqlConnection(DatabaseConnection.ConnectionStringToDb)) 
{ 
    using (var cmd = new SqlCommand("command string", cn)) 
    { 
      // your code 
    } 
} 

DatabaseConnection.ConnectionStringToDb是一个静态辅助类的属性创建获取或存储连接字符串。

+1

我使用类似的,但你可以做cn.CreateCommand(“select ...”)它更好 –

+1

是的..虽然你没有[CreateCommand()](http://msdn.microsoft.com/ en-us/library/1756xwa3.aspx)这需要一个参数..我想这是一个错字。 –

-1

请勿保持连接处于打开状态。如果你在使用(SqlConnection con = new SqlConnection(...))的地方使用.Net使用连接池,其工作速度非常快。你可以阅读在这里http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

+0

我不认为OP正在争辩**,而赞成**保持连接畅通。事实上,他提到这样做在另一个应用程序中造成了问题。 – Yuck

0

我想建立的是我可以在 CONNSTRING传递,以便生成我的SqlConnection的方法。这是一个不好的 的想法?

这是一个好主意。但微软在SqlConnection的打败你将它与此构造:

http://msdn.microsoft.com/en-us/library/d7469at0.aspx

+0

使用该示例何时关闭连接? ? – scarpacci

+1

@scarpacci - 在你的*建议实现下,连接什么时候关闭。我们可以看到你的建议是一种方法,给定一个连接字符串,返回一个连接对象 - 这听起来非常像'新的SqlConnection'正在做什么...... –

相关问题