Почему Sql Server возвращает один и тот же код ошибки для каждого исключения в asp.net?
Я создаю веб-сайт asp.net, на котором я должен отслеживать различные исключения, такие как дублирование электронной почты пользователя или вставленные данные или нет, или исключения внешнего ключа, но SQL Server 2016 всегда возвращает код ошибки -2146232060. Я слышал о дубликат кода ошибки 2206 или что-то
Это мое.DBManager
класс, который я использовал для вставки или извлечения данных.
class DBManager : IDisposable
{
private DbConnection con;
private DbCommand command;
public DBManager() : this("DefaultConnection") { }
public DBManager(string connectionStringName)
{
string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
con = new SqlConnection(connectionString);
}
public int ExecuteNonQuery()
{
int result;
if (command == null)
{
return -5;
}
try
{
con.Open();
result = command.ExecuteNonQuery();
}
catch (DbException ex)
{
result = ex.ErrorCode;
}
finally
{
con.Close();
}
return result;
}
public DataTable ExecuteDataTable()
{
DataTable dt = new DataTable();
SqlDataAdapter da;
if (command == null)
{
return dt;
}
try
{
da = new SqlDataAdapter();
con.Open();
da.SelectCommand = (SqlCommand) command;
}
finally
{
con.Close();
}
da.Fill(dt);
return dt;
}
public object ExecuteScalar()
{
object result;
if (command == null)
{
return -5;
}
try
{
con.Open();
result = command.ExecuteScalar();
}
catch (DbException ex)
{
result = ex.ErrorCode;
}
finally
{
con.Close();
}
return result;
}
public DataSet ExecuteDataSet()
{
DataSet ds = new DataSet();
if (command == null)
{
return ds;
}
try
{
con.Open();
DbDataAdapter ad = new SqlDataAdapter((SqlCommand)command);
ad.Fill(ds);
}
finally
{
con.Close();
}
return ds;
}
public void SetSqlStringCommand(string commandText)
{
command = GetCommand(commandText, CommandType.Text);
}
public void SetStoredProcedureCommand(string commandText)
{
command = GetCommand(commandText, CommandType.StoredProcedure);
}
private DbCommand GetCommand(string commandText, CommandType commandType)
{
DbCommand command = con.CreateCommand();
command.CommandType = commandType;
command.CommandText = commandText;
return command;
}
public void AddInParameter(string name, DbType dbType, object value)
{
if (command != null)
{
AddParameter(command, name, dbType, value, ParameterDirection.Input, 0);
}
else
{
throw new ArgumentException("Command cannot be null");
}
}
public void AddOutParameter(string name, DbType dbType, int size)
{
if (command != null)
{
AddParameter(command, name, dbType, null, ParameterDirection.Output, size);
}
else
{
throw new ArgumentException("Command cannot be null");
}
}
private void AddParameter(DbCommand command, string name, DbType dbType, object value,
ParameterDirection direction, int size)
{
var parameter = command.CreateParameter();
parameter.ParameterName = name;
parameter.DbType = dbType;
parameter.Value = value ?? DBNull.Value;
parameter.Direction = direction;
if (size > 0)
{
parameter.Size = size;
}
command.Parameters.Add(parameter);
}
public void Dispose()
{
if (command != null)
{
command.Dispose();
command = null;
}
if (con != null)
{
con.Dispose();
con = null;
}
}
}
Это потому, что я использую DbConnection
класс вместо SqlConnection
?