Member 13411983 Ответов: 1

Использование идентификатора выбора 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;
        }

        }


}


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

Я пробовал этот код, но он не работает.

1 Ответов

Рейтинг:
2

RickZeeland

Попробуйте использовать ComboBox.SelectedItem или ComboBox.SelectedIndex свойство для установки / получения выбранного элемента.