怎样退出关闭数据库链接?

herocome 2004-11-07 01:33:32
SqlConnection cn=new SqlConnection(SQL);
cn.Open();
SqlCommand cm=new SqlCommand(SQL,cn);
SqlDataReader dr=cm.ExecuteReader();
dr.Close();cm.Dispose();cn.Close();cn.Dispose();

这样的语句算不算完全退出数据库并释放资源?
为什么把这段代码执行到一定数量时系统就会象死机一样啦,没反应,只能重起IIS才能正常执行?
...全文
241 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
herocome 2004-11-08
  • 打赏
  • 举报
回复
2003的服务器下,每到一定时间后IIS就不响应,表现为:是点连接后没响应,CPU一点动静都没有,并没有100%很忙,CPU是很闲的死机。系统一切正常。
我只能在IIS死机时重起IIS就行了,但不能天天去重起IIS吧。不知到底是什么原因
herocome 2004-11-07
  • 打赏
  • 举报
回复
回复人: jinbingg(bing) ( ) 信誉:100 2004-11-07 08:52:00 得分: 0


搂住可以不可以优化你的sql,要不用村出过程式一下,我觉得你的访问量很大。。不合适用
SqlDataReader 你用 SqlDataAdapter


请教:SqlDataReader 和 SqlDataAdapter在访问量上有什么区别吗?这和假死有关系吗?
现在搞不清楚什么原因引起假死,感觉是某个值累积到一定程度后系统就假死了。只能在IIS中把回收进程的时间调小来解决,但这样调小回收进程时间对统计不利。大家就没碰到这种现象吗?我们用的是win2003系统。在2000下不知情况如何,又不能换系统。有人说是win2003系统的JetData接口有BUG,但也没看到微软给2003提供sp1包


jinbingg 2004-11-07
  • 打赏
  • 举报
回复
搂住可以不可以优化你的sql,要不用村出过程式一下,我觉得你的访问量很大。。不合适用
SqlDataReader 你用 SqlDataAdapter
zhongwanli 2004-11-07
  • 打赏
  • 举报
回复
cn.Close();
cnhgj 2004-11-07
  • 打赏
  • 举报
回复
你最好跟踪一下你的SQL SERVER。。看是否执行了什么事务还有看看进程信息里有哪些。。我想你应该是不停的对数据库进行操作
herocome 2004-11-07
  • 打赏
  • 举报
回复
回复人: cnhgj(戏子)(黄某人养不成沙皮狗) ( ) 信誉:100 2004-11-07 01:43:00 得分: 0


一般你执行完操作后就释放一下就可以了。。

>>为什么把这段代码执行到一定数量时系统就会象死机一样

那你得检查你的程序是否一直在进行大量的操作了。


只有你的回复有点接近我的意思,楼上另几位都会错我意思啦,我并不是问执行不了的问题,所以不需要异常来结束吧。

上面我只是把执行的主要流程写了,现在的问题是程序执行是很正常的,并不是执行不了,而且在结尾大家应当看到了每个申明过的变量都释放了。问题是出在:目前公司网站访问量在1000人在线,每当一定时间(不确定要多久),系统就会对点击的执行页面没反应了,要重起IIS才行。就象大家说的假死一样吧。所以,我怀疑是不是数据库的连接语句是不是还有没释放的地方。希望大家能给分析一下到底是怎么回事
tonybaobao 2004-11-07
  • 打赏
  • 举报
回复
try
{
cn.Open();
...
//use "using" and the datareader will be closed automatically
using( SqlDataReader dr= ExcuteReader(...) )
{
while( dr.Read() )
{
//do something
string str = dr.GetString(0);
}
}
}
catch(Exception ex)
{
//catch exception
}
finally
{
cn.Close();
}
cnhgj 2004-11-07
  • 打赏
  • 举报
回复
一般你执行完操作后就释放一下就可以了。。

>>为什么把这段代码执行到一定数量时系统就会象死机一样

那你得检查你的程序是否一直在进行大量的操作了。
Uncommon 2004-11-07
  • 打赏
  • 举报
回复

SqlConnection cn=new SqlConnection(SQL);
try
{
cn.Open();
SqlCommand cm=new SqlCommand(SQL,cn);
SqlDataReader dr=cm.ExecuteReader();
}
catch
{
//异常处理
}
finally
{
cn.Close();
}

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧