2016-10-19 3 views
0

Ниже приведено изображение формы. Я хочу вставить значения, а затем загрузить их из базы данных, но значения comboboxes не вставлены. Помогите мне пожалуйста ... Что не так с моим кодом?Значение ComboBox не сохраняется в базе данных сервера sql

private void btnSave_Click(object sender, EventArgs e) 
    { 
     if (string.IsNullOrEmpty(tbPermissionID.Text) == true) 
     { 
      string CS = ConfigurationManager.ConnectionStrings["UMSdbConnectionString"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(CS)) 
      { 
       using (SqlCommand cmd = new SqlCommand("SELECT MAX(per_id)+1 FROM Permission", con)) 
       { 
        con.Open(); 
        cmd.CommandType = CommandType.Text; 
        SqlDataReader dr = cmd.ExecuteReader(); 
        { 
         if (dr.Read()) 
         { 

          tbPermissionID.Text = dr[0].ToString(); 
          SqlParameter p1 = new SqlParameter("@per_id", tbPermissionID.Text); 
          SqlParameter p2 = new SqlParameter("@fk_group_id", cbGroupName.SelectedText.ToString()); 
          SqlParameter p3 = new SqlParameter("@fk_form_id", cbFormName.SelectedText.ToString()); 
          SqlParameter p4 = new SqlParameter("@per_save", cbSave.Items[cbSave.SelectedIndex].ToString()); 
          SqlParameter p5 = new SqlParameter("@per_update", cbUpdate.SelectedText.ToString()); 
          SqlParameter p6 = new SqlParameter("@per_select", cbSelect.SelectedText.ToString()); 
          SqlParameter p7 = new SqlParameter("@per_delete", cbDelete.SelectedText.ToString()); 
          SqlParameter p8 = new SqlParameter("@per_flag", cbFlag.SelectedText.ToString()); 
          SqlCommand cmd1 = new SqlCommand("insert into Permission (per_id,fk_group_id,fk_form_id,per_save,per_update,per_select,per_delete,per_flag) VALUES ('" + p1.Value + "','" + p2.Value + "','" + p3.Value + "','" + p5.Value + "','" + p5.Value + "','" + p6.Value + "','" + p7.Value + "','" + p8.Value + "')", con); 
          cmd1.ExecuteNonQuery(); 
          MessageBox.Show("Record Saved"); 
          LoadPermissionDetails(); 

         } 
        } 
       } 
      } 
     } 
    } 

Here is the picture

+1

Это не то, как вы используете параметры. – LarsTech

+0

Эти параметры отлично работают с значением текстового поля, но не с comboboxs –

+0

Нет. Вы добавляете параметры к своему объекту Command. Прямо сейчас ваш запрос открыт для SQL-запросов и форматирования. Исправьте этот запрос, чтобы сказать 'VALUES (@per_id, @fk_group_id ...' и т. Д. – LarsTech

ответ

0

Какой объект вы установите на источник данных ComboBoxes? Если это простой массив строк, попробуйте это вместо ComboBox.SelectedText:

ComboBox.SelectedItem.ToString() 

Если DataSource не массив строк, вы должны бросить значение SelectedItem вам целевой тип, а затем получить свойство, которое вам необходимо вставить в базу данных. Например. если вы назначили список компаний в ComboBox и объект Компания имеет имя свойства под названием «Имя», вы должны сделать что-то вроде этого:

((Company)ComboBox.SelectedItem).Name 

Не забудьте проверить, если ничего не выбрано, чтобы избежать NullReferenceException.

+0

У меня есть поле со списком, в котором есть два элемента «Y» и «N», теперь i хочу добавить значение combox в базу данных через параметры ... Я делал каждую попытку с помощью cbSave.SelectedItems.ToString() ;, cbSave.SelectedTextToString() ;, cbSave.SelectedValue.ToString(), но никто из них не работает ... и вы упомянули свойство Name .. Я не получил его. ... –

+0

Я упомянул имя как образец. Если это практика, можете ли вы разместить свой код где-нибудь, чтобы я мог проверить, в чем проблема? – Saeid

+0

Offcourse бросьте его практику ... если вы предоставите мне свой адрес электронной почты, он будет очень оценен –

Смежные вопросы