最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - Violation of PRIMARY KEY constraint 'PK__Utilizat__E7C4569277E40FC4'. Cannot insert duplicate key in object

programmeradmin2浏览0评论

I'm studying for an Olympiad, C#, WinForms (.NET Framework 4.8). I'm working on an exercise which is telling me to create 3 DB tables, Utilizatori (Users), Rezultate (Results) and another one, itemi (Items). The exercise is specifically telling me that EmailUtilizator (UserEmail) from Rezultate (Results) table should be a foreign key for Utilizatori (Users) table.

My code:

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.SqlClient;
using System.IO;

namespace JocEducativ
{
    public partial class Form1 : Form
    {
        private SqlConnection con;

        public Form1()
        {
            InitializeComponent();

            string connectionString = (@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\JocEducativ.mdf;Integrated Security=True;Connect Timeout=30");

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();

                string queryUtilizatori = @"
                BULK INSERT Utilizatori
                FROM 'D:\olimpiada c#\JocEducativ\Utilizatori.txt'
                WITH (
                    FIELDTERMINATOR = ';',
                    ROWTERMINATOR = '\n',
                    FIRSTROW = 1,
                    CODEPAGE = '65001'
                );";

                using (SqlCommand cmdUtilizatori = new SqlCommand(queryUtilizatori, con))
                {
                    cmdUtilizatori.ExecuteNonQuery();
                }

                string queryRezultate = @"
                BULK INSERT Rezultate
                FROM 'D:\olimpiada c#\JocEducativ\Rezultate.txt'
                WITH (
                    FIELDTERMINATOR = ';',
                    ROWTERMINATOR = '\n',
                    FIRSTROW = 1,
                    CODEPAGE = '65001'
                );";

                using (SqlCommand cmdRezultate = new SqlCommand(queryRezultate, con))
                {
                    cmdRezultate.ExecuteNonQuery();
                }

                string queryItemi = @"
                BULK INSERT Itemi
                FROM 'D:\olimpiada c#\JocEducativ\Itemi.txt'
                WITH (
                    FIELDTERMINATOR = ';',
                    ROWTERMINATOR = '\n',
                    FIRSTROW = 1,
                    CODEPAGE = '65001'
                );";

                using (SqlCommand cmdItemi = new SqlCommand(queryItemi, con))
                {
                    cmdItemi.ExecuteNonQuery();
                }
            }
        }
    }
}

The tables:

CREATE TABLE [dbo].[Utilizatori] 
(
    [EmailUtilizator] NVARCHAR (100) NOT NULL,
    [NumeUtilizator]  NVARCHAR (50)  NULL,
    [Parola]          NVARCHAR (50)  NULL,
    PRIMARY KEY CLUSTERED ([EmailUtilizator] ASC)
);

CREATE TABLE [dbo].[Rezultate] 
(
    [idRezultat]      INT            IDENTITY (1, 1) NOT NULL,
    [TipJoc]          INT            NULL,
    [EmailUtilizator] NVARCHAR (100) NULL,
    [PunctajJoc]      INT            NULL,
    PRIMARY KEY CLUSTERED ([idRezultat] ASC),
    CONSTRAINT [FK_Rezultate_ToTable] 
        FOREIGN KEY ([EmailUtilizator]) REFERENCES [dbo].[Utilizatori] ([EmailUtilizator])
);

The error :

System.Data.SqlClient.SqlException: 'Violation of PRIMARY KEY constraint 'PK__Utilizat__E7C4569277E40FC4'. Cannot insert duplicate key in object 'dbo.Utilizatori'. The duplicate key value is ([email protected]). The statement has been terminated.

I received the .txt file in the Olympiad practice folder, and there is an interesting thing:

[email protected];otipopescu;abc123@A
[email protected];otigeescu;def456@A
[email protected];otimarinescu;ghi123@B
[email protected];otilefter;jkl456@A
[email protected];ana;Ana18
[email protected];Marian;marian12
[email protected];Ioana;ioana12
[email protected];Costel;costel9
[email protected];Mihai;mihai8
[email protected];Maria;maria8
[email protected];Cosmin;cosmin6
[email protected];Cristina;cristina6

The first 4 rows ([email protected]) work perfectly.

From the 5th row ([email protected]) onwards, I keep getting errors.

If I remove [email protected], I get the same error for [email protected] (the next one).

I am a beginner in SQL, so any explanation would help me a lot.

Thank you in advance!

发布评论

评论列表(0)

  1. 暂无评论