KevinClaassens Ответов: 0

Как добавить в базу данных


У меня возникли проблемы с добавлением в базу данных. Я использую 3-уровневую архитектуру и с трудом добавляю ее в базу данных.

В моем слое доступа к данным у меня есть вспомогательный класс БД, который помогает с выполнением запросов.
public static bool ExecuteNonQuery(string commandName, CommandType cmdType,
           SqlParameter[] pars)
       {
           int result = 0;
           using (SqlConnection con = new SqlConnection(connString))
           {
               using (SqlCommand cmd = con.CreateCommand())
               {
                   cmd.CommandType = cmdType;
                   cmd.CommandText = commandName;
                   cmd.Parameters.AddRange(pars);

                   try
                   {
                       if (con.State != ConnectionState.Open)
                       {
                           con.Open();
                       }
                       result = cmd.ExecuteNonQuery();
                   }
                   catch
                   {
                       throw;
                   }
               }
           }
           return result > 0;
       }


И в моем dbAccess у меня есть
public bool RegisterOfficer(Officer o)
        {
            SqlParameter[] pars = new SqlParameter[]
            {
                new SqlParameter("@Officer",o.officerID ),
                new SqlParameter("@StationID",o.StationID ),
                new SqlParameter("@FirstName",o.firstName ),
                new SqlParameter("@LastName", o.lastName),
                new SqlParameter("@Address", o.address),
                new SqlParameter("@DateOfBirth", o.dateOfBirth),
                new SqlParameter("@CellPhone",o.cellPhone),
                new SqlParameter("@Language",o.language),
                new SqlParameter("@Email", o.email),
                new SqlParameter("@Rank", o.rank),
                new SqlParameter("@Password", o.password),
            };
            return DBHelper.ExecuteNonQuery("spRegisterOfficer", CommandType.StoredProcedure, pars);
        }


В моем слое бизнес-логики у меня есть
public bool RegisterOfficer(Officer o)
       {
           return db.RegisterOfficer(o);
       }


И мой код для кнопки выглядит так
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Edocket"].ConnectionString);
        BusinessLogicLayer bl = new BusinessLogicLayer();
        Officer newOfficer = null;
        protected void CreateUser_Click(object sender, EventArgs e)
        {
            newOfficer = new Officer();
            newOfficer.officerID =Convert.ToInt64(txtIDNum.Text);
            newOfficer.StationID = int.Parse(txtStation.Text);
            newOfficer.firstName = txtFirstName.Text;
            newOfficer.lastName = txtLastName.Text;
            newOfficer.address = txtAddress.Text;
            newOfficer.dateOfBirth = Convert.ToDateTime(txtDateOfBirth.Text);
            newOfficer.cellPhone = txtCellPhone.Text;
            newOfficer.language = txtLanguage.Text;
            newOfficer.email = txtEmail.Text;
            newOfficer.rank = txtRank.Text;
            newOfficer.password = txtPassword.Text;

            try
            {
                bl.RegisterOfficer(newOfficer);
                Response.Redirect("Default.aspx");

            }
            catch (Exception)
            {

            }


Но ничего не происходит после того, как я нажимаю кнопку, и записи не добавляются в базу данных

Что я уже пробовал:

Я пробовал много гуглить и отслеживать код

PIEBALDconsult

Ну, может быть, хватит глотать исключения и посмотрим, что получится.

KevinClaassens

Теперь он говорит, что ожидает параметр @OfficerID, но, насколько я вижу, я предоставил все необходимые параметры

PIEBALDconsult

"@Officer", o. officerID <= = не так уж и много.

KevinClaassens

Как мне это исправить?

PIEBALDconsult

Исправьте имя параметра.

KevinClaassens

Боже мой! Спасибо,но я все еще получаю ту же ошибку

PIEBALDconsult

Убедитесь, что он не нулевой.

KevinClaassens

Да я убедился что он не нулевой

Dave Kreskowiak

Избавьтесь от блока try/catch, чтобы вы могли видеть любые выбрасываемые исключения.

KevinClaassens

Я сделал. Затем я получил сообщение об ошибке, говорящее, что он ожидает параметр @OfficerID. Он все еще показывает эту ошибку после того, как я исправил проблему с именем параметра, на которую указал PIEBALDconsult

PIEBALDconsult

Дважды проверьте имя в процедуре.

KevinClaassens

Я обнаружил свою ошибку. Большое вам спасибо за время, потраченное на помощь. Это очень ценится:)

0 Ответов