#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;
}