ich ein Projekt mache, und ich bin am Anfang stecken bereits Also habe ich zwei Tische für zwei Klassen wie folgt aus:C# Zwei-Klassen und zwei Tabellen verknüpfen
CREATE TABLE [dbo].[T_Artikli] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Naziv] NVARCHAR (100) NOT NULL,
[Sifra] VARCHAR (13) NOT NULL,
[Vp] FLOAT (53) NOT NULL,
[MP] FLOAT (53) NOT NULL,
[Napomena] NVARCHAR (300) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
und
CREATE TABLE [dbo].[T_Stanje] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Trenutno] INT NOT NULL,
[Naruceno] INT NOT NULL,
[Datum] DATE NOT NULL,
[Firma] NVARCHAR (40) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_T_Stanje_T_Artikli] FOREIGN KEY ([Id]) REFERENCES [dbo].[T_Artikli] ([Id])
);
Die Klasse 'Artikl' und ihr Tisch 'T_Artikli' wirken wie ein Zauber, das Problem ist mit dem anderen. Dieser Teil des Codes sollten Werte speichern in einer Tabelle:
private void btnSacuvaj_Click(object sender, EventArgs e)
{
CStanje sta = new CStanje();
sta.Trenutno = Int32.Parse(txtTrenutno.Text);
sta.Naruceno = Int32.Parse(txtNaruceno.Text);
sta.Firma = txtFirma.Text;
sta.Datum = DateTime.Parse(dtDatum.Text);
Artikl art = new Artikl();
art.ID = Int32.Parse(cbArtikli.SelectedValue.ToString());
sta.Artikl = art;
Console.WriteLine(sta.Trenutno);
Console.WriteLine(sta.Naruceno);
Console.WriteLine(sta.Firma);
Console.WriteLine(sta.Datum);
Console.WriteLine(art.ID);
sta.dodajStanje();
indeksSelektovanog = dgStanje.Rows.Count;
}
Es gibt diesen Fehler zurück:
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_T_Stanje_T_Artikli". The conflict occurred in database "C:\USERS\MORSUS\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\SEMINARSKI\EVIDENCIJA\EVIDENCIJA\BIN\DEBUG\EVIDENCIJADB.MDF", table "dbo.T_Artikli", column 'Id'.
Auf dieser Linie:
public void dodajStanje()
{
string insertSql = "INSERT INTO T_Stanje " +
"(Trenutno, Naruceno, Datum, Firma) VALUES " +
"(@Trenutno, @Naruceno, @Datum, @Firma)";
using (SqlConnection connection = new SqlConnection(_connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = insertSql;
//command.Parameters.Add(new SqlParameter("@Sifra", Sifra));
command.Parameters.Add(new SqlParameter("@Trenutno", Trenutno));
command.Parameters.Add(new SqlParameter("@Naruceno", Naruceno));
command.Parameters.Add(new SqlParameter("@Datum", Datum));
command.Parameters.Add(new SqlParameter("@Firma", Firma));
connection.Open();
command.ExecuteNonQuery(); //error
}
}
Ich nehme ich etwas falsch gemacht habe in der SQL . Kann mir bitte jemand aufzeigen?
Eine weitere Frage zu SQL, wie kommt es, dass meine SQL-Tabellen nur für einige Zeit gespeichert werden, zB 3-4 Programmläufe. Die Daten werden nach einiger Zeit gelöscht. Sie wissen nicht genau wann. Und Kopieren nach Ausgabeverzeichnis ist auf Neu kopieren gesetzt.
Fragen Sie nach weiteren Informationen.
Also ist das Problem in den gleichen Attributnamen? – Morsus
Um nur pedantisch zu sein, ist es auch in 1: 1-Beziehungen gültig, wenn die PK auch eine FK ist; Es ist, dass beide IDENTITÄT das Problem sind. Nur der "Elternteil" sollte IDENTITY verwenden. – Uueerdo
Ja wahr @Uueerdo, guter Punkt. Ich dachte, basierend auf der Beschreibung würde es wahrscheinlich nicht der Fall sein, aber ja möglich. –