c# combobox Items добавить в базу данных
Есть ComboBox значения (student, teacher, magister). В базе данных MySQL есть под такими же именами колонки student, teacher, magister. Теперь при выборе teacher нужно добавлять данные в колонку teacher.
Помогите пожалуйста как это сделать? У меня все параметры добавляются только в одну колонку.
private void Addbutton_Click(object sender, EventArgs e)
{
try
{
string query = "insert into sta(student, teacher, magister) Values (@student, @teacher, @magister)";
this.dataGridView1.DataSource = AutoNumberedTable(dt);
con.Open();
MySqlCommand cmd = new MySqlCommand(query, con);
cmd.Parameters.Add("@student", MySqlDbType.VarChar, 20).Value = comboBox4.Items;
cmd.Parameters.Add("@teacher", MySqlDbType.VarChar, 20).Value = comboBox4.Items;
cmd.Parameters.Add("@magister", MySqlDbType.VarChar, 20).Value = comboBox4.Items;
if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("Added");
}
con.Close();
spisok();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error!");
con.Close();
}
}
Ответы (1 шт):
У вас неправильная архитектура таблиц в БД.
Вы хотите получить
sta
| id | student | teacher | magister |
|---|---|---|---|
| 1 | Ivanov | ||
| 2 | Petrov | ||
| 3 | Sidorov |
Но с этими данными будет сложно работать, и потом, что делать если получится вот так?
sta
| id | student | teacher | magister |
|---|---|---|---|
| 1 | Ivanov | Ivanov | |
| 2 | Petrov | Petrov | |
| 3 | Sidorov | Sidorov |
Структура данных никак не защищает вас от такого рода ошибок
Сделайте другую таблицу типа
sta
| id | name | type_id |
|---|---|---|
| 1 | Ivanov | 0 |
| 2 | Petrov | 1 |
| 3 | Sidorov | 2 |
Где type_id - ссылка на другую таблицу
types
| id | name |
|---|---|
| 0 | student |
| 1 | teacher |
| 2 | magister |
Как раз, вы сможете из этой таблицы заполнить ComboBox и по его же значению выставлять type_id в таблице с фамилиями.
Позднее вы познакомитесь с SQL JOIN и сможете доставать такие данные одним запросом из обеих таблиц, а не двумя, а пока попробуйте реализовать то что я предложил, даже разными запросами.