大家都知道 using(type object){code}其实也就是 IDisposable中的释放资源方法的便利写法Dispose()
今天在重写OleDbHelper的时候 发现了一个问题MSDN也说的比较含糊 我这个人也比较笨..请教下各位大虾啦~
代码如下 PrepareCommand为准备cmdpublic static object GetSingle(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
if ((obj.Equals(null) || obj.Equals(DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch(OleDbException exp)
{
throw new Exception(exp.Message);
}
}
}
}
这代码看上去 确实没什么问题 但是细推敲一下 貌似connection最后还是没有关闭
这样习惯着写connection的人 估计不在少数 我也查看了网上好多oledbHelper大多都是这么写的(别嫌我helper老.. 不是不喜欢用ORM只不过是小项目..呵呵)
那么 using会自动调用connection.Dispose()
查看OleDbConnection对象的Dispose()解释:释放由 Component 使用的所有资源。
Component解释提供 IComponent 接口的基实现并启用应用程序之间的对象共享
IComponent 接口 解释: 提供所有组件需要的功能。
是不是说的很含糊?? 我看了是一知半解... 到底有没有关闭连接呢??
由于我对Component不熟悉 望大虾指点一下啊 如果不能关闭连接 我就直接写到finally里面去了~
(由于本人 追踪对象这个功能板目前用不起来...装VS2008SP1装坏的 - -#要不然自己解决下了 哎... 再加上我还是初学..)
今天在重写OleDbHelper的时候 发现了一个问题MSDN也说的比较含糊 我这个人也比较笨..请教下各位大虾啦~
代码如下 PrepareCommand为准备cmdpublic static object GetSingle(string SQLString, params OleDbParameter[] cmdParms)
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
using (OleDbCommand cmd = new OleDbCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
if ((obj.Equals(null) || obj.Equals(DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch(OleDbException exp)
{
throw new Exception(exp.Message);
}
}
}
}
这代码看上去 确实没什么问题 但是细推敲一下 貌似connection最后还是没有关闭
这样习惯着写connection的人 估计不在少数 我也查看了网上好多oledbHelper大多都是这么写的(别嫌我helper老.. 不是不喜欢用ORM只不过是小项目..呵呵)
那么 using会自动调用connection.Dispose()
查看OleDbConnection对象的Dispose()解释:释放由 Component 使用的所有资源。
Component解释提供 IComponent 接口的基实现并启用应用程序之间的对象共享
IComponent 接口 解释: 提供所有组件需要的功能。
是不是说的很含糊?? 我看了是一知半解... 到底有没有关闭连接呢??
由于我对Component不熟悉 望大虾指点一下啊 如果不能关闭连接 我就直接写到finally里面去了~
(由于本人 追踪对象这个功能板目前用不起来...装VS2008SP1装坏的 - -#要不然自己解决下了 哎... 再加上我还是初学..)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货