Jar*_*rth 2 c# sql-server sqlcommand sqlconnection return-value
我在C#中有一个程序,我创建了各种类,所有这些都需要调用数据库.所以我决定创建一个静态类来处理所有调用,以便我可以非常轻松地应用深远的变化.在那个类中,我有调用SqlCommand(ExecuteReader()等等)各个部分的函数我最终厌倦了重写所有的连接代码,并将它抽象到另一个函数中getSqlCommand(),该函数只返回一个初始化的函数SqlCommand,用于执行各种命令.我选择不将其传递SqlCommand回其他程序(虽然它是一种公共方法,以防万一我需要它),因为如果你在将结果返回给程序之前我会做一些预处理.
我的问题是,如果/何时SqlConnection关闭?因为它作为a中的返回值被传回SqlCommand,它会保持打开状态吗?如果是的话,我可以关闭吗?这是一些代码(略微剥离),所以你可以看到我在做什么,提前谢谢!
创建的功能SqlCommand:
public static SqlCommand GetSqlCommand(string query)
{
using (SqlConnection dbConnection = new SqlConnection( SQLConn )) {
dbConnection.Open();
SqlCommand cmd = new SqlCommand( query, dbConnection );
cmd.CommandTimeout = 0;
return cmd;
}
}
Run Code Online (Sandbox Code Playgroud)
静态类中命令用法的示例:
public static SqlDataReader executeReader( string query )
{
try {
return GetSqlCommand(query).ExecuteReader();
} catch (SqlException) {
//Notify User and Resolve Error
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
SqlConnection当你打电话时,A 关闭Dispose.离开using区块就是这样.连接将被关闭.
这里的所有都是它的.它不会神奇地保持打开状态,因为ADO.NET不知道并且无法找到您返回的连接对象.
将连接移出GetSqlCommand方法.将连接对象传递给该方法.GetSqlCommand没有创建连接的业务.它应该连接,使用它,但不要关闭它.
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |