ClassTable
: **
CREATE TABLE ClassTable
(
className varchar(255) NOT NULL PRIMARY KEY,
classFee int,
academicYear int
);
StudentTable
:
CREATE TABLE StudentTable
(
id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
firstName varchar(255) NOT NULL,
lastName varchar(255),
fatherName varchar(255),
fatherNo varchar(255),
motherName varchar(255),
motherNo varchar(255),
dob date,
dor date,
gender varchar(255),
className varchar(255),
healthInsuranceNo varchar(255),
resAddress varchar(255),
photo Image,
CONSTRAINT FK_StudentTable
FOREIGN KEY (className) REFERENCES ClassTable(className)
);
C# код:
cmd = new SqlCommand("INSERT INTO StudentTable (firstName, lastName, fatherName, fatherNo, motherName, motherNo, dob, dor, gender, className, healthInsuranceNo, resAddress, photo) VALUES (@firstName, @lastName, @fatherName, @fatherNo, @motherName, @motherNo, @dob, @dor, @gender, @className, @healthInsuranceNo, @resAddress, @photo)", con);
con.Open();
cmd.Parameters.AddWithValue("@firstName", txt_FirstName.Text);
cmd.Parameters.AddWithValue("@lastName", txt_LastName.Text);
cmd.Parameters.AddWithValue("@fatherName", txt_FatherName.Text);
cmd.Parameters.AddWithValue("@fatherNo", txt_FatherNo.Text);
cmd.Parameters.AddWithValue("@motherName", txt_MotherName.Text);
cmd.Parameters.AddWithValue("@motherNo", txt_MotherNo.Text);
cmd.Parameters.AddWithValue("@dob", dateTimePickerDOB.Text);
cmd.Parameters.AddWithValue("@dor", dateTimePickerDOR.Text);
cmd.Parameters.AddWithValue("@gender", cmb_Gender.Text);
cmd.Parameters.AddWithValue("@className", cmb_Class.Text);
cmd.Parameters.AddWithValue("@healthInsuranceNo", txt_HealthInsurance.Text);
cmd.Parameters.AddWithValue("@resAddress", txt_Address.Text);
MemoryStream ms = new MemoryStream();
img_Box.Image.Save(ms, img_Box.Image.RawFormat);
cmd.Parameters.AddWithValue("@photo", ms.ToArray());
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Accountant successfully registered.");
Когда я пишу вручную запрос к SQL серверу позволяет мне вставить данные в столбец внешнего ключа (className
), но когда я пытаюсь вставить из моего приложения C# Winforms, я получаю эту ошибку:
Оператор INSERT конфликтовал с ограничением FOREIGN KEY "FK_StudentTable". Конфликт произошел в базе данных «SchoolDatabase», таблице «dbo.ClassTable», столбце «className».
Я использовал этот запрос для ручного ввода записи в базу данных, и он работал:
INSERT INTO StudentTable (firstName, className)
VALUES ('name here', 'class one');