我们用asp.net+oracle开发项目,代码里,打开数据库之后,已经立即关闭了.但是oracle中的session还是存在.查询V$seesion表,那些进程都是inactive状态.不知道是代码问题,还是oracle的问题?那位仁兄遇到过?请帮忙!!!!!急!我跟踪了一段代码,这段代码明明打开连接之后关闭连接了.但是数据库还是有这个进程,这段代码有错误吗?
public static System.Data.DataTable Execute(string szSql)
{
string szCnn = "..";
System.Data.OracleClient.OracleConnection objCn = new System.Data.OracleClient.OracleConnection(szCnn);
objCn.Open();
System.Data.OracleClient.OracleDataAdapter objAdp = new System.Data.OracleClient.OracleDataAdapter(szSql, objCn);
System.Data.DataTable dtRs = new System.Data.DataTable(); try
{
objAdp.Fill(dtRs);
return dtRs;
}
catch
{
objCn.Close();
return null;
}
finally
{
objAdp.Dispose();
objCn.Close();
objAdp =null;
objCn = null;
}
}
public static System.Data.DataTable Execute(string szSql)
{
string szCnn = "..";
System.Data.OracleClient.OracleConnection objCn = new System.Data.OracleClient.OracleConnection(szCnn);
objCn.Open();
System.Data.OracleClient.OracleDataAdapter objAdp = new System.Data.OracleClient.OracleDataAdapter(szSql, objCn);
System.Data.DataTable dtRs = new System.Data.DataTable(); try
{
objAdp.Fill(dtRs);
return dtRs;
}
catch
{
objCn.Close();
return null;
}
finally
{
objAdp.Dispose();
objCn.Close();
objAdp =null;
objCn = null;
}
}
加上上面的试试
也就是不用objCn.Open()吧.....其二,你可以使用using(objCn = new OracleConnection()){}
--------------------------------------------------------------
您好,我们是“2006中国首届杰出数据库工程师评选”活动组委会。
您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选复选的90位数据库工程师将与您展开积极的互动。
一方面,他们会为您的问题提供满意的答案,
另一方面,也邀请您为他们投上宝贵的选票。2006-7-8 ~ 2006-7-25日,每天我们将从当天参与"有奖投票"的网友
中抽取3名幸运者,赠送由IBM提供的精美礼品一份!此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
http://www.bestdba.cn/match_discussion3.aspx?pointid=97&pointid2=1&pointid3=5非常感谢您对本次活动的支持!
--------------------------------------------------------------
您好,我们是“2006中国首届杰出数据库工程师评选”活动组委会。
您的帖子已经被我们转载到本次评选官方网站的“专家在线答疑”区。
http://www.bestdba.cn/match_discussion.aspx在那里,进入本次评选复选的90位数据库工程师将与您展开积极的互动。
一方面,他们会为您的问题提供满意的答案,
另一方面,也邀请您为他们投上宝贵的选票。2006-7-8 ~ 2006-7-25日,每天我们将从当天参与"有奖投票"的网友
中抽取3名幸运者,赠送由IBM提供的精美礼品一份!此外,您还可以在“专家在线答疑”区提出新的问题并参与讨论。您的帖子位于:
http://www.bestdba.cn/match_discussion3.aspx?pointid=97&pointid2=1&agains=1&pointid3=5非常感谢您对本次活动的支持!
--------------------------------------------------------------
就是说你connection.Close()后, ADO.NET并没有释放掉connection, 它会保留一段时间,以拱新的connection创建时,就可以省去一大笔new的开销..另外ADO.NET连接池参数, 都可以在MSDN里查到, (好象是查 connect string 就行吧)