Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在站点上显示数据库连接_C#_Asp.net_Sql Server 2008 - Fatal编程技术网

C# 在站点上显示数据库连接

C# 在站点上显示数据库连接,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,只是想知道是否有人知道如何在页面上显示DB连接的状态 我想知道是否有一个良好的连接,或如果它是关闭。在这种情况下,我还将显示原因。只需捕获数据库异常,因为一旦没有连接,它将触发异常/错误 如果存在连接,您就知道在使用asp.net处理数据库时,连接不应该一直处于打开状态。请记住,您不必(也不应该)一直显示数据库的连接状态。您应该做的是,在使用ado.net或其他or/M执行查询时,只需捕获s并向用户提供有意义的错误 从msdn文章: try { // code here } catch (

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


我想知道是否有一个良好的连接,或如果它是关闭。在这种情况下,我还将显示原因。

只需捕获数据库异常,因为一旦没有连接,它将触发异常/错误


如果存在连接,您就知道在使用asp.net处理数据库时,连接不应该一直处于打开状态。请记住,您不必(也不应该)一直显示数据库的连接状态。您应该做的是,在使用ado.net或其他or/M执行查询时,只需捕获s并向用户提供有意义的错误

从msdn文章:

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

理想情况下,告诉用户有关数据库的信息并不是一个好的实践。任何数据库错误都应该被记录下来,并替换为更为用户友好的错误消息

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


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

检查连接状态的方法有很多,您可以使用ASP.Net定时器定期检查连接,(每个计时器间隔都会导致回发到服务器并导致网络流量),请参阅

Timer\u 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;
        }
    }

捕获一般异常(
异常
)不是一个好的做法,您可以捕获SQLException,然后使用另一个块来处理一般异常。

您的解决方案中是否存在持久的db连接?不应该存在任何连接。业务层尝试访问db,如果成功,则将结果传递到页面,或者以其他方式将异常传递到页面。在任何情况下,连接都将失败在页面在客户端显示之前关闭。这是我理想的做法,只要让他们知道数据库是否无法访问,以及为什么他们可以告诉我。