我是 C# 的初学者。所以请帮我解决这个问题。
引发的异常:System.Data.SqlClient.dll 中的“System.Data.SqlClient.SqlException”System.Data.SqlClient.dll 中发生“System.Data.SqlClient.SqlException”类型的未处理异常违反主键约束“PK_SES” '。无法在对象“dbo.SES”中插入重复键。重复键值为 (456785)。
请注意,我不是程序员,我只是一个接到学校项目的学生。
这是代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
namespace DiTEC_Assignment
{
public partial class SES : Form
{
SqlConnection conn;
SqlCommand cmd;
SqlDataAdapter sda;
public SES()
{
InitializeComponent();
}
private void btnInsert_Click(object sender, EventArgs e)
{
using var conn = new SqlConnection(@"Data Source=TS-G5\SQLEXPRESS;Initial Catalog=EsoftProj;Integrated Security=True");
using var cmd = new SqlCommand("INSERT INTO SES([Registration Number], [Student Name], [Date of Birth], Gender, [Contact Number], [Course enrolled in]) VALUES (@RegistrationNumber,@StudentName,@DateOfBirth,@Gender,@ContactNumber,@CourseEnrolledIn)", conn);
conn.Open();
cmd.Parameters.Add("@RegistrationNumber", SqlDbType.Int).Value = Convert.ToInt32(RegNumTB.Text);
cmd.Parameters.Add("@StudentName", SqlDbType.Text).Value = StudentNameTB.Text;
cmd.Parameters.Add("@DateOfBirth", SqlDbType.Date).Value = DoBPick.Value.Date;
cmd.Parameters.Add("@Gender", SqlDbType.Text).Value = GMale.Checked ? "M" : "F";
cmd.Parameters.Add("@ContactNumber", SqlDbType.Int).Value = Convert.ToInt32(ContactNumTB.Text);
cmd.Parameters.Add("@CourseEnrolledIn", SqlDbType.Text).Value = CourseEnrSel.GetItemText(CourseEnrSel.SelectedItem);
cmd.ExecuteNonQuery();
if(cmd.ExecuteNonQuery()>0)
{
MessageBox.Show("Record inserted");
}
else
{
MessageBox.Show("Record failed");
}
}
}
}