C# SqlException错误代码返回-2146232060而不是26(无法找到服务器实例)

C# SqlException错误代码返回-2146232060而不是26(无法找到服务器实例),c#,sql-server,visual-studio,exception,try-catch,C#,Sql Server,Visual Studio,Exception,Try Catch,我正在尝试处理一个异常,我知道它的错误代码是26,但它没有返回正确的整数,即-2146232060 因此,与其写这封信: catch (SqlException e) { if (e.ErrorCode == 26) { //my code } } 我必须用这个: catch (SqlException e) { if (e.Message.ToUpper().Contains("ERROR: 26")) {

我正在尝试处理一个异常,我知道它的错误代码是26,但它没有返回正确的整数,即-2146232060

因此,与其写这封信:

catch (SqlException e)
{
    if (e.ErrorCode == 26)
    {
        //my code
    }
}
我必须用这个:

catch (SqlException e)
{
    if (e.Message.ToUpper().Contains("ERROR: 26"))
    {
        //my code
    }
}

为什么它返回-2146232060,我怎样才能得到26,这样我就不需要比较所有的字符串值了?

我想你要看的是SqlException.Number(这是SQL的错误号),而不是SqlException.ErrorCode(这是SQL驱动程序的错误号)

静态void Main(字符串[]参数){


关于SqlException的更多信息以及您收到的特定错误。

问题是什么?@Markus Deibel抱歉,我不够清楚,所以我在第二个代码段末尾对其进行了编辑:)可能重复@MarkusDeibel这根本不是该问题的重复。请在进行assu之前阅读该问题mptions。
        try {
            var connection = new SqlConnection(@"Data Source=(localdb)\mssqllocaldb;Initial Catalog=Sandbox;Integrated Security=SSPI;");
            connection.Open();
            var command = new SqlCommand("throw 50000, 'oops', 1;", connection);
            command.ExecuteNonQuery();
        }
        catch (SqlException ex) {
            Console.WriteLine(ex.ErrorCode + ": " + ex.Number + ": " + ex.Message);
            for (int i = 0; i < ex.Errors.Count; i++)
                Console.WriteLine(ex.Errors[i].Number + ": " + ex.Errors[i].Message);
        }
        catch (Exception ex) {
            Console.WriteLine(ex.Message);
        };

    }
-2146232060: 50000: oops
50000: oops