【发布时间】:2017-02-03 22:53:21
【问题描述】:
我有一个 try\catch 块,用于处理打开连接并将数据插入数据库。
catch (SqlException ex)
{
string sqlError = null;
for (int i = 0; i < ex.Errors.Count; i++)
{
sqlError += "Error Message " + ex.Errors[i].Message + "\n" + "Stored Procedure " + ex.Errors[i].Procedure + " \n " + "Line Number " + ex.Errors[i].LineNumber;
}
LogTools.WriteLog("Sql Server error " + sqlError);
Variables.InstallStatusDetail = "Database connection failed";
if (!sqlError.Contains("connection to SQL Server"))
{
if (Variables.WriteToDatabase)
{ HostedDataBase.InsertRunStatusIntoInstallStatus('E', sqlError, null); }
}
}
我想将不会干扰连接和记录到数据库的 sqlexceptions 记录到数据库中。当找不到数据库,或者登录没有适当的权限等时会出现问题。引发异常,并尝试登录到数据库,所以当它这样做时,它会调用写入到数据库的函数数据库并尝试再次访问,但再次引发相同的异常,导致尝试写入数据库失败的循环(因为找不到 DSN,或者用户没有适当的权限)。
如何处理会阻止我访问和写入数据库的 sql 错误,同时仍然能够编写不会导致此循环的 sql 错误?
【问题讨论】:
标签: c# ado.net sqlexception