C# 捕捉';无法打开数据库';数据库和交换机数据库的异常
我的问题是,是否有可能捕获无法打开数据库的错误? 当我在连接字符串中给出错误的数据库名称时,我在浏览器上会遇到此错误C# 捕捉';无法打开数据库';数据库和交换机数据库的异常,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我的问题是,是否有可能捕获无法打开数据库的错误? 当我在连接字符串中给出错误的数据库名称时,我在浏览器上会遇到此错误 无法打开登录请求的数据库“XYZ” 我在web.config中有两个连接字符串,如果一个数据库不可访问,我想切换到另一个数据库。我试过了 SqlConnection conn = null; try { conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PrimaryDatab
无法打开登录请求的数据库“XYZ”
我在web.config
中有两个连接字符串,如果一个数据库不可访问,我想切换到另一个数据库。我试过了
SqlConnection conn = null;
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PrimaryDatabase"].ConnectionString);
}
catch
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BackupDatabase"].ConnectionString);
}
但服务器在命中此部件之前抛出错误。我应该在哪里捕获此错误
还是我做错了,应该做一些完全不同的事情?这里的代码实际上没有打开连接。为此,您需要使用
conn.Open()。。。这意味着它在try
块之外,因此永远不会被抓到
确保您的conn.Open()
语句实际位于try
块内,您应该可以。此处的代码实际上没有打开连接。为此,您需要使用conn.Open()。。。这意味着它在try
块之外,因此永远不会被抓到
请确保您的conn.Open()
语句实际上位于try
块中,您应该没事。我不一定建议嵌套try-catch块,但由于conn.Open()抛出异常,因此您需要将第二次连接数据库的尝试包含在try-catch块中
SqlConnection conn = null;
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PrimaryDatabase"].ConnectionString);
conn.Open();
// do stuff
conn.Close();
}
catch (SqlException ex)
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BackupDatabase"].ConnectionString);
conn.Open();
// do stuff
conn.Close();
}
catch
{
// log or handle error
}
}
我不一定建议嵌套try-catch块,但由于conn.Open()抛出异常,因此您需要将连接到数据库的第二次尝试包含在try-catch块中
SqlConnection conn = null;
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["PrimaryDatabase"].ConnectionString);
conn.Open();
// do stuff
conn.Close();
}
catch (SqlException ex)
{
try
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BackupDatabase"].ConnectionString);
conn.Open();
// do stuff
conn.Close();
}
catch
{
// log or handle error
}
}
何时调用连接的Open
方法?何时调用连接的Open
方法?我在conn=new-SqlConnection(ConfigurationManager.ConnectionStrings[“PrimaryDatabase”].ConnectionString)上有一个断点代码>行,但在到达断点之前,我得到了一个错误,并且我的conn.open()
明显低于此值。既然大家都认为它应该击中它,我一定是做错了什么。将检查并跟踪我在conn=new SqlConnection(ConfigurationManager.ConnectionStrings[“PrimaryDatabase”].ConnectionString)上有一个断点代码>行,但在到达断点之前,我得到了一个错误,并且我的conn.open()
明显低于此值。既然大家都认为它应该击中它,我一定是做错了什么。将检查并跟进我在conn=new SqlConnection(ConfigurationManager.ConnectionStrings[“PrimaryDatabase”].Connecti上有一个断点onString)代码>行,但我在到达断点之前出错,我的conn.open()显然低于此值。既然大家都认为它应该击中它,我一定是做错了什么。将检查并跟进我在conn=new SqlConnection(ConfigurationManager.ConnectionStrings[“PrimaryDatabase”].Connecti上有一个断点onString)代码>行,但我在到达断点之前出错,我的conn.open()显然低于此值。既然大家都认为它应该击中它,我一定是做错了什么。我们会检查并跟进