Nie_yar
@Nie_yar
Начинающий программист.

Как поместить значение из одной связанной таблицы MySql в другую при работе в Visual Studio на C#?

Всем добрый день! С толкнулся с проблемой при создании программы тестирования знаний.
У меня есть 3 таблицы созданные в phpMyAdmin: questions, subjects, answers.
Таблица subjects содержит следующие поля: ID, subject_name, subject_title,
Таблица answers содержит следующие поля: ID, answer_1, answer_2, answer_3, answer_4, true_answer
Таблица questions содержит следующие поля: ID, question_text, ID_answer, ID_subject

Поля ID_answer, ID_subject таблицы questions связаны с ID двух других таблиц.

При вводе информации в приложении выскакивает следующая ошибка "Field 'ID_answer' doesn't have a default value"

Форма на скриншоте.
5ec418996eb8b813190834.jpeg
private void btn_added_Click(object sender, EventArgs e)
        {
            string sql = "INSERT INTO vedar_bd.answers(answer_1, answer_2, answer_3, answer_4, true_answer) VALUES (@a1, @a2, @a3, @a4, @ta)";
            string sql2 = "INSERT INTO vedar_bd.subjects(subject_name, subject_title) VALUES(@sn, @st)";          
            string sql3 = "INSERT INTO vedar_bd.questions(question_text) VALUES (@qt)";

            string connStr = @"server=localhost; port=3306; username=root; password= root; database=vedar_bd;";

            MySqlConnection conn = new MySqlConnection(connStr);
            conn.Open();

            MySqlCommand command = new MySqlCommand(sql, conn);

            command.Parameters.Add("@a1", MySqlDbType.VarChar, 250);
            command.Parameters.Add("@a2", MySqlDbType.VarChar, 250);
            command.Parameters.Add("@a3", MySqlDbType.VarChar, 250);
            command.Parameters.Add("@a4", MySqlDbType.VarChar, 250);
            command.Parameters.Add("@ta", MySqlDbType.VarChar, 250);

            command.Parameters["@a1"].Value = txt_answer_1.Text;
            command.Parameters["@a2"].Value = txt_answer_2.Text;
            command.Parameters["@a3"].Value = txt_answer_3.Text;
            command.Parameters["@a4"].Value = txt_answer_4.Text;
            command.Parameters["@ta"].Value = txt_answer_true.Text;

            command.ExecuteNonQuery();


            MySqlCommand command2 = new MySqlCommand(sql2, conn);

            command2.Parameters.Add("@sn", MySqlDbType.VarChar, 250);
            command2.Parameters.Add("@st", MySqlDbType.VarChar, 250);

            command2.Parameters["@sn"].Value = txt_subject.Text;
            command2.Parameters["@st"].Value = txt_title.Text;

            command2.ExecuteNonQuery();


            MySqlCommand command3 = new MySqlCommand(sql3, conn);

            command3.Parameters.Add("@qt", MySqlDbType.VarChar, 250);

            command3.Parameters["@qt"].Value = rtxt_question.Text;

            command3.ExecuteNonQuery();


            conn.Close();

        }

Буду очень благодарен за помощь.
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
Nie_yar
@Nie_yar Автор вопроса
Начинающий программист.
Все оказалось очень просто. В два первых запроса добавил SELECT last_insert_id(), а результат поместил в int i = Convert.ToInt32(command.ExecuteScalar()); Дальше, я думаю, что все понятно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы