Использование идентификатора выбора combobox для вставки его в другую таблицу в C#
Я очень новичок в C#, но делаю некоторые эксперименты самостоятельно. Я создал базу данных с 3 таблицами:
tbl_Student: IDCard, Sname, Ssurname
tbl_Course: Сид, запись CNAME
tbl_StudentClass: CID, IDCard.
Между ними существует связь. Часть базы данных я в порядке.
Теперь я создал 2 формы. 1 форма заполняется таблица курсов. Другая форма заполняет таблицу студентов. В студенческой форме у меня есть combobox, который перечисляет имя курса, читая из таблицы курса. Combobox работает нормально.
Проблема в том, что когда я хочу нажать кнопку Сохранить, таблица StudentCourse заполняется с помощью ID-карты и CID в соответствии с тем, какой курс пользователь выбирает из выпадающего списка combobox. Я могу заполнить ID-карту, но не знаю, как заполнить CID, то есть использовать CID названия курса, выбранного из выпадающего списка.... любая помощь, пожалуйста?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClient; namespace StudentClassApplication { public partial class frmCreateStudent : Form { SqlConnection con = new SqlConnection(@"Data Source=REUBEN-PC\MSSQLEXPRESS;Initial Catalog=StudentClass;Integrated Security=True"); public frmCreateStudent() { InitializeComponent(); FillCombobox(); } private void SaveStudent_button1_Click(object sender, EventArgs e) { try { con.Open(); SqlCommand cmd1 = new SqlCommand("INSERT into tbl_Student (IDCard,Sname, Ssurname) values (@IDCard,@Sname,@Ssurname)", con); //insert data into tbl_Student Table cmd1.Parameters.AddWithValue("@IDCard", textBox1.Text); cmd1.Parameters.AddWithValue("@Sname", textBox2.Text); cmd1.Parameters.AddWithValue("@Ssurname", textBox3.Text); cmd1.ExecuteNonQuery(); cmd1.Parameters.Clear(); SqlCommand cmd2 = new SqlCommand("INSERT into tbl_StudentClass (IDCard, CID) VALUES (@IDCard,@CID)", con); //insert data into tbl_StudentClass Table cmd2.Parameters.AddWithValue("@IDCard", textBox1.Text); cmd2.Parameters.AddWithValue("@CID", comboBox1.SelectedValue); cmd2.ExecuteNonQuery(); cmd2.Parameters.Clear(); con.Close(); //connection close here , that is disconnected from data source MessageBox.Show("Student has been added ! "); } catch (Exception ex) { MessageBox.Show("Cannot open connection ! "); } } private void frmCreateStudent_Load(object sender, EventArgs e) { } public void FillCombobox() { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = ("select * from tbl_Class"); SqlDataReader myreader; try { con.Open(); myreader = cmd.ExecuteReader(); while (myreader.Read()) { string cname = myreader.GetString(1); comboBox1.Items.Add(cname); } } catch (Exception ex) { MessageBox.Show("Cannot open connection ! "); } } protected void comboBox1_DataBound(object sender, EventArgs e) { var value = comboBox1.SelectedValue; } } }
Что я уже пробовал:
Я пробовал этот код, но он не работает.