вставка значений из веб-формы, имеющей поле для значения в другой таблице

#c# #database #visual-studio #webforms

#c# #База данных #visual-studio #веб-формы

Вопрос:

Я работаю над заданием, в котором я должен заполнить информацию в веб-форме, затем вставить эту информацию в локальную базу данных, однако одно из полей веб-формы связано с другой таблицей в базе данных, и я не уверен, как реализовать соединение, которое может это выполнить.

Моя база данных:

Player — (PK)PlayerID — имя_игрушки — JerseyNumber

Статистика — (PK)StatId — Идентификатор игрока — Сыгранные матчи — Выигранные матчи — Голевые передачи — Голы — Очки

Мои запросы веб-формы:

Имя игрока — выпадающий список, Сыгранные матчи — Текстовое поле, выигранные матчи — Текстовое поле, Голевые передачи — Текстовое поле, Голы — Текстовое поле, Кнопка Добавить

Вот что у меня есть в событии нажатия кнопки

 tblStatistic = (DataTable)Cache["tbl"];

            DataRow newRow = tblStatistic.NewRow();
            newRow["StatID"] = 0;

            newRow["MatchesPlayed"] = txtMatchesPlayed.Text;
            newRow["MatchesWon"] = txtMatchesWon.Text;
            newRow["Assists"] = txtAssists.Text;
            newRow["Goals"] = txtGoals.Text;
            tblStatistic.Rows.Add(newRow);

            adapter.InsertCommand = cmdBuilder.GetInsertCommand();
            int rowsAffected = adapter.Update(tblStatistic);

            if (rowsAffected == 1)
            {
                lblMessage.Text = "Stats inserted";
                lblMessage.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                lblMessage.Text = "Stat not inserted";
                lblMessage.ForeColor = System.Drawing.Color.Red;
            }
  

ошибка, которую я получаю, гласит: «‘PlayerID’ не допускает нулевых значений».

Комментарии:

1. Чтобы связать таблицы игрока и статистики, вам нужно добавить один и тот же идентификатор игрока в обе таблицы.

2. Да, проблема в том, что я должен получить этот идентификатор игрока, когда «пользователь» выбирает имя игрока из выпадающего списка @MariosNikolaou

3. Хорошо, когда пользователь выбирает player, получает идентификатор и вставляет его в таблицу статистики в качестве внешнего ключа.

Ответ №1:

 if you want to add row in Statistic  you have to pass id of player as a FK 
just add this line to your code i hope it works
   newRow["PlayerID"] = int.parse(drpPlayer.selectedvalue);

it will be :
tblStatistic = (DataTable)Cache["tbl"];

            DataRow newRow = tblStatistic.NewRow();
            newRow["StatID"] = 0;
            newRow["PlayerID"] = int.parse(drpPlayer.selectedvalue);
            newRow["MatchesPlayed"] = txtMatchesPlayed.Text;
            newRow["MatchesWon"] = txtMatchesWon.Text;
            newRow["Assists"] = txtAssists.Text;
            newRow["Goals"] = txtGoals.Text;
            tblStatistic.Rows.Add(newRow);



            adapter.InsertCommand = cmdBuilder.GetInsertCommand();
            int rowsAffected = adapter.Update(tblStatistic);

            if (rowsAffected == 1)
            {
                lblMessage.Text = "Stats inserted";
                lblMessage.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                lblMessage.Text = "Stat not inserted";
                lblMessage.ForeColor = System.Drawing.Color.Red;
            }