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!