2015-08-03 4 views
2

я получил следующее сообщение об ошибке моего кода:C ошибка базы данных SQL Server #

Исключение типа «System.Data.SqlClient.SqlException» произошло в System.Data.dll, но не обрабатывается пользователем код

Дополнительная информация: UPDATE заявление в противоречие с FOREIGN KEY ограничение

"FK_TutorID". Конфликт произошел в базе данных «NPTC», таблица «dbo.Tutor», столбец «TutorID».

Это мой код:

// Instantiate a SqlConnection object with the COnnection String read. 
SqlConnection conn = new SqlConnection(strConn.ToString()); 

// Instantiate a sqlcommand object, provide a update sql statement to add 
// class to tutor record specified by a classID 
SqlCommand cmd = new SqlCommand(" 
    UPDATE TuitionClass 
    SET TutorID = @tutorID 
    FROM TuitionClass 
    INNER JOIN Tutor ON TuitionClass.tutorID = Tutor.tutorID 
        AND TuitionClassID = @selectedTuitionClassID", conn); 

// Define the parameter used in SQL statement, value for the parameter is retrieved 
// from class's property 
cmd.Parameters.AddWithValue("@tutorID", TutorID); 
cmd.Parameters.AddWithValue("@selectedTuitionClassID", tuitionClassID); 

// open a Database connection 
conn.Open(); 

// Execute the SQL statement 
int count = cmd.ExecuteNonQuery(); 

// Close database connection 

Я не уверен, где это пошло не так, потому что я думаю, что мой код является правильным?

+2

Код может быть правильным, но сообщение об ошибке сообщает вам, что именно не так. Вам нужно проверить отношение внешнего ключа, которое у вас есть на этом столе. –

+0

'Конфликт произошел в базе данных« NPTC », таблица« dbo.Tutor », столбец« TutorID ». Это ваша проблема. Вы, вероятно, пытаетесь обновить TutorID до значения, которое не существует из исходной таблицы. – Kritner

+0

Почему вы делаете JOIN в своем заявлении UPDATE? Я не вижу, чтобы оно служило какой-либо цели. –

ответ

4

Вы прошли недопустимую parameterer здесь:

cmd.Parameters.AddWithValue("@tutorID", TutorID); 

TutorID не совпадает с Tutor в базе данных.