0

我是 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");
            }



        }

        
    }
}
4

0 回答 0