2015-08-17 2 views
-3

Я пробовал этот код, и без combobox он работает.Как сохранить данные combobox в базе данных SQL Server 2012?

После добавления combobox(comboBloodGroup) с 8 выбранных элементов и типа данных, выбранного в nvchar(50), я получаю ошибку

Как Код для вставки данных COMBOBOX в базу данных SQL.

Мой новый код

private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     {   
      string strConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\USERS\MYPC\DOCUMENTS\LOGIN.MDF"; 
      SqlConnection cn = new SqlConnection(strConnectionString); 
      cn.Open(); 
      int iId = Convert.ToInt32(txtId.Text.Trim()); 
      string strFName = txtFName.Text.Trim(); 
      string strLName = txtLName.Text.Trim(); 
      int iAge = Convert.ToInt32(txtAge.Text.Trim()); 
      string stremail = txtemail.Text.Trim(); 
      string strMobile = txtMobile.Text.Trim(); 
      string strAddress = txtAddress.Text.Trim(); 
      string strCity = txtCity.Text.Trim(); 
      int iPinCode = Convert.ToInt32(txtPinCode.Text.Trim()); 
      string strGender; 
      if (rbMale.Checked) 
       strGender = "Male"; 
      else 
       strGender = "Female"; 
      string strBloodGroup = comboBloodGroup.SelectedItem.ToString();     
      DateTime dtDOB = dtPickerDOB.Value; 
      string query = "INSERT INTO information(Id, FName, LName, Age, email, Mobile, Address, City, PinCode, Gender, BloodGroup, DOB)VALUES(@iId, @strFName, @strLName, @iAge, @stremail,@strMobile, @strAddress, @strCity, @iPinCode, @strGender, @strBloodGrourp, @dtDOB)"; 
      SqlCommand InsertCommand = new SqlCommand(query, cn); 
      InsertCommand.Connection = cn; 
      InsertCommand.Parameters.AddWithValue("@iId", iId); 
      InsertCommand.Parameters.AddWithValue("@strFName", strFName); 
      InsertCommand.Parameters.AddWithValue("@strLName", strLName); 
      InsertCommand.Parameters.AddWithValue("@iAge", iAge); 
      InsertCommand.Parameters.AddWithValue("@stremail", stremail); 
      InsertCommand.Parameters.AddWithValue("@strMobile", strMobile); 
      InsertCommand.Parameters.AddWithValue("@strAddress", strAddress); 
      InsertCommand.Parameters.AddWithValue("@strCity", strCity); 
      InsertCommand.Parameters.AddWithValue("@iPinCode", iPinCode); 
      InsertCommand.Parameters.AddWithValue("@strGender", strGender); 
      InsertCommand.Parameters.AddWithValue("@strBloodGroup", strBloodGroup); 
      InsertCommand.Parameters.AddWithValue("@dtDOB", dtDOB); 
      InsertCommand.ExecuteNonQuery();    
      MessageBox.Show("New Patient's Data has been added successfully"); 
      cn.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+1

Какова ошибка? На какой линии? Не могли бы вы уточнить свою проблему? –

+0

Ошибка «объявить скалярную переменную» @strBloodGroup ». – harini

ответ

0

Вы опечатались @strBloodGrourp в запросе. Перейдите в @strBloodGroup.

string query = "INSERT INTO information(Id, FName, LName, Age, email, Mobile, Address, City, PinCode, Gender, BloodGroup, DOB)VALUES(@iId, @strFName, @strLName, @iAge, @stremail,@strMobile, @strAddress, @strCity, @iPinCode, @strGender, **@strBloodGrourp**, @dtDOB)"; 

И вы добавляете параметр @strBloodGroup

+0

Спасибо, что он работает. – harini

0

Ваше имя параметра вы определили в вашей команде и ваши AddWithValue не совпадают. Вы определили его как strBloodGrourp в своей команде, но вы указали его strBloodGroup в своем AddWithValue.

Измените имя параметра в своей команде как;

@strGender, @strBloodGroup, @dtDOB 

Несколько вещей больше;

  • Используйте using statement утилизировать соединение и команду автоматически вместо вызова метода Close вручную.
  • Не используйте метод AddWithValue. It may generate unexpected and surprising results sometimes. Используйте метод перегрузки Add, чтобы указать тип параметра и его размер.

using(var cn = new SqlConnection(strConnectionString)) 
using(var InsertCommand = cn.CreateCommand()) 
{ 
    // Set your CommandText property with parameter names. 
    // Define your parameter names and it's values. Add them to your command. 
    // Open your connection. 
    // Execute your query. 
} 
+0

Спасибо за ур ответ – harini

+1

Если это решило вашу проблему, пожалуйста, отметьте его как ответ –

0

У вас есть опечатка

string query = "INSERT INTO information(Id, FName, LName, Age, email, Mobile, Address, City, PinCode, Gender, BloodGroup, DOB)VALUES(@iId, @strFName, @strLName, @iAge, @stremail,@strMobile, @strAddress, @strCity, @iPinCode, @strGender, @strBloodGrourp, @dtDOB)";

Следует читать

string query = "INSERT INTO information(Id, FName, LName, Age, email, Mobile, Address, City, PinCode, Gender, BloodGroup, DOB)VALUES(@iId, @strFName, @strLName, @iAge, @stremail,@strMobile, @strAddress, @strCity, @iPinCode, @strGender, @strBloodGroup, @dtDOB)";

Вы имели дополнительный R в bloodgroup

+0

Спасибо за ур ответ – harini

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