C# SqlException错误代码返回-2146232060而不是26(无法找到服务器实例)
我正在尝试处理一个异常,我知道它的错误代码是26,但它没有返回正确的整数,即-2146232060 因此,与其写这封信: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")) {
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