大家知道, 在.net中 ,数据库的连接信息只有在连接池里的不到的时候,才会去建立 , 现在有一个问题 : 我有一个网页是每隔一段时间去检测数据库是否连接正常 , 就是网页自动刷新 , 但是当此网页一直开着 , 只刷新时 , 并不能即时发现(当数据库已经连接不上)数据库server段已经断开 , 我查了一些资料 , 说是.net有连接池 , IIS里保存数据库连接的信息 , 所以我想问大家 在页面每次reload 时 , 重新建立连结 , 而不是使用连结池或者IIS里保存的旧信息
在.net中,如何清除连结池中的数据库连接信息
在我的程式中連接數據庫的部份寫法如下 :
string ConnString="data source=Soucename;user id=username;password= password;Persist Security Info=False";
string returnString = "";
Oraconn = new OracleConnection(ConnString);
try
{
Oraconn.Open();
returnString="OK";
}
catch(Exception ex)
{
returnString=ex.Message;
Response.Clear();
}
finally
{
Oraconn.Close();
Response.Clear();
}
在.net中,如何清除连结池中的数据库连接信息
在我的程式中連接數據庫的部份寫法如下 :
string ConnString="data source=Soucename;user id=username;password= password;Persist Security Info=False";
string returnString = "";
Oraconn = new OracleConnection(ConnString);
try
{
Oraconn.Open();
returnString="OK";
}
catch(Exception ex)
{
returnString=ex.Message;
Response.Clear();
}
finally
{
Oraconn.Close();
Response.Clear();
}
string ConnString="data source=Soucename;user id=username;password= password;Persist Security Info=False;pooling=false";
string ConnString="data source=Soucename;user id=username;password= password;Persist Security Info=False;pooling=false";加上pooling=false 之后,确实可以重新建立连接 , 但是我的页面却会不停的刷新 , 以致无法正常监控 以下为我的 刷新循环程序的部份码 , 请楼上帮忙解析一下 , 谢谢!
<script language="javascript" id="clientEventHandlersJS">
function refre()
{
f1.submit ();
}
var i = 0;
function counter()
{
if (i==0)
var ref = document.f1.T_Fresh.value;
else
var ref = document.f1.T_Left.value
var counter = ref; i++;
if (counter >= 1)
{
counter = counter - 1;
}
else
{
counter = counter;
}
if (counter <= 0)
{
document.f1.submit();
}
document.f1.T_Left.value = counter; counter=setTimeout("counter()",1000);
}
</script>
<BODY language="javascript" id="Body1" topMargin="5" scroll="yes" onload="javascript:counter();">
Fresh Time:<input id="T_Fresh" type="text" onchange="document.f1.submit();" size="15" name="T_Fresh" runat="server">
Left Time:<input id="T_Left" type="text" size="15" name="T_Left" runat="server">
注释 : Fresh Time 是说刷新间隔时间 ; Left Time 为离刷新剩余的时间
CS 档部份代码如下所示
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;using System.Configuration;
using System.Data.OracleClient;
using System.Data.SqlClient;
using System.Text;
using System.IO;namespace Monitor
{
/// <summary>
/// WebForm1 的摘要描述。
/// </summary>
public class Monitor : System.Web.UI.Page
{
private const long maxGarbage = 1000;
protected System.Web.UI.WebControls.Label Label_Tbody;
protected System.Web.UI.HtmlControls.HtmlImage Img_DMP11;
protected System.Web.UI.HtmlControls.HtmlTable T_QueryCondition;
protected System.Web.UI.HtmlControls.HtmlInputText T_Fresh;
protected System.Web.UI.HtmlControls.HtmlInputText T_Left;
protected System.Web.UI.HtmlControls.HtmlGenericControl Frame_LogDetail;
protected System.Web.UI.WebControls.Label Label_LogRealTime; protected OracleCommand Oracmd;
protected OracleDataAdapter Oraadapter;
protected OracleConnection Oraconn;
protected string error=""; private void Page_Load(object sender, System.EventArgs e)
{ // 在这里放置使用者程序码以初始化网页
try
{
Page.EnableViewState = false;
if(T_Fresh.Value.Trim().ToString()==null||T_Fresh.Value.Trim().ToString()=="")
{
T_Fresh.Value="30";
T_Left.Value="30";
}
else
{
T_Fresh.Value=T_Fresh.Value.Trim().ToString();
T_Left.Value=T_Fresh.Value.Trim().ToString();
}
FillDataXMLDBCon();
}
catch(Exception ex)
{
error = ex.Message;
}
}private void FillDataXMLDBCon()
{
string ConnString="data source=source;user id=username;password= password;Persist Security Info=False ;pooling=false ";string returnString = "";
Oraconn = new OracleConnection(ConnString);
try
{
Oraconn.Open();
returnString="OK";
}
catch(Exception ex)
{
returnString=ex.Message;
Response.Clear();
}
finally
{
Oraconn.Close();
Response.Clear();
}
if(returnString!= "OK")
{
ErrorCount++;
DateTime now = DateTime.Now;
}
i++;
T_Left.Value=T_Fresh.Value.Trim().ToString();
}
}
}
这就好比本来有5个窗口卖票,你过去买票时哪个窗口空着就到哪个窗口买,如果全满了卖票处就再开个窗口。可现在你却要每来一个人,专门为他开个窗口,别人不能用。等这个人买好了票再把这个窗口拆掉,重新再为下一个人建另一个窗口……
这就好比本来有5个窗口卖票,你过去买票时哪个窗口空着就到哪个窗口买,如果全满了卖票处就再开个窗口。可现在你却要每来一个人,专门为他开个窗口,别人不能用。等这个人买好了票再把这个窗口拆掉,重新再为下一个人建另一个窗口……
WEB Form 没有保持数据库的连接 , 请问 , 你看到是那一句保持了数据库的连接