Как вставить данные в таблицу внешнего ключа? - PullRequest
0 голосов
/ 22 января 2020

Как вставить первичный ключ в столбец внешнего ключа.

Я пытаюсь получить UserID из tblUser и вставить его в tblPurchasedGames, где имя столбца равно UserID. Однако я получаю сообщение об ошибке, которое можно увидеть под кодом.

Что я пробовал до сих пор:

private void Btn_AddToLibary_Click(object sender, RoutedEventArgs e)
{
   sqlConnection.Open();
   SqlCommand com = new SqlCommand("INSERT into tblPurchasedGames (UserID, GameID)" + "values(@UserID, @GameID)", sqlConnection);
   com.Parameters.AddWithValue("@UserID","UserID");
   com.Parameters.AddWithValue("@GameID","GameID");
   com.ExecuteNonQuery();
   sqlConnection.Close();
}

Ошибка:

Преобразование не удалось, когда преобразование значения nvarchar 'UserID' в тип данных int.

Диаграмма отношений таблиц: enter image description here

Ответы [ 4 ]

1 голос
/ 22 января 2020

В следующей части вы пытаетесь вставить строки в целочисленные поля:

com.Parameters.AddWithValue("@UserID","UserID");
com.Parameters.AddWithValue("@GameID","GameID");

Вы можете попробовать следующий код

com.Parameters.Add("@UserID",SqlDbType.Int) = yourUserIDVar;
com.Parameters.Add("@GameID",SqlDbType.Int) = yourGameIDVar;

Заменить yourUserIDVar и yourGameIdVar на переменные, которые вы хотите передать в метод.

1 голос
/ 22 января 2020

Вы пытаетесь добавить параметр как строки , но вы должны добавить их как целые числа :

 com.Parameters.AddWithValue("@UserID", UserID);
 com.Parameters.AddWithValue("@GameID", GameID);

РЕДАКТИРОВАТЬ:

Здесь я Предположим, у вас есть переменные типа int UserID и GameID, которые содержат значения внешнего ключа.

0 голосов
/ 22 января 2020

Попробуйте это:

 private void Btn_AddToLibary_Click(object sender, RoutedEventArgs e)
        {
            sqlConnection.Open();
            SqlCommand com = new SqlCommand("INSERT into tblPurchasedGames (UserID, GameID)" + "values(@UserID, @GameID)", sqlConnection);
            com.Parameters.AddWithValue("@UserID",UserID.Text);
            com.Parameters.AddWithValue("@GameID",GameID.Text);
            com.ExecuteNonQuery();
            sqlConnection.Close();
        }

Вы пытаетесь добавить параметр как строки, но вы должны добавить их как целые числа:

0 голосов
/ 22 января 2020

Я почти уверен, что ваши столбцы 'UserID' помечены как varchar, и вы пытаетесь вставить их в tblPurchasedGames 'UserID', который имеет тип int

РЕДАКТИРОВАТЬ: Miamy ответы, вероятно, правы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...