在现场显示数据库连接

时间:2012-07-16 08:27:46

标签: c# asp.net sql-server-2008

只是想知道是否有人知道如何在页面上显示数据库连接的状态。

我想知道是否有良好的连接,或者它是否已关闭。在这种情况下,我也会显示原因。

4 个答案:

答案 0 :(得分:1)

使用asp.net处理数据库时,连接不应该一直打开。保持这种想法,你不必(并且不应该)始终显示数据库的连接状态。您应该做的是在使用ado.net或其他OR / M执行查询时捕获SqlException并向您的用户提供有意义的错误。

来自msdn文章:

try {
   // code here
}
catch (SqlException odbcEx) {
   // Handle more specific SqlException exception here.
}
catch (Exception ex) {
   // Handle generic ones here.
}

答案 1 :(得分:0)

只捕获数据库异常,因为一旦没有连接就会触发异常/错误。

如果有连接,你就会知道

答案 2 :(得分:0)

理想情况下,告诉用户数据库并不是一个好习惯。应记录任何数据库错误,并替换为更加用户友好的错误消息。

如果仍需要在屏幕上显示连接状态,则可以处理SQLConnection的StateChange事件并显示相应的消息。

更新:我建议您只记录错误并让程序向您发送有失败的电子邮件或手动查看系统,而不是用户告诉您数据库已关闭。

答案 3 :(得分:0)

可能有很多方法可以检查连接状态,您可以使用ASP.Net Timer定期检查连接,(remember每个定时器间隔导致回发到服务器并导致网络流量,见Walkthrough: Using the ASP.NET Timer Control with Multiple UpdatePanel Controls

Timer_Tick事件中,您可以检查连接并在标签中发布消息。以下几行......

protected void Timer1_Tick(object sender, EventArgs e)
{
   try
       {
        using (SqlConnection sqlConn =
            new SqlConnection("YourConnectionString"))
            {
                sqlConn.Open();
                Label1.Text = "Database Available";


            }
        }
    catch (Exception ex)
        {
                Label1.Text = "Database Un-Available, " + "Possible Reason:"+ ex.Message;
        }
    }

捕获泛型异常(Exception)不是一个好习惯,你可能会捕获SQLException,然后有另一个块来处理泛型异常。