Почему 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?

0 ответов

Другие вопросы по тегам