Ich versuche, die folgenden zwei Tabellen miteinander zu verbinden:Anschließen von zwei SQL Server-Tabellen
CREATE TABLE [dbo].[Groups]
(
[Group_Id] INT IDENTITY (1, 1) NOT NULL,
[Group_Name] NVARCHAR (50) NULL,
[Group_Desc] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Group_Id] ASC)
);
CREATE TABLE [dbo].[Events]
(
[Event_Id] INT IDENTITY (1, 1) NOT NULL,
[Event_Group_Id] INT null,
[Event_Type] NVARCHAR (50) NULL,
[Event_Title] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Event_Id] ASC),
CONSTRAINT fk_event_group
FOREIGN KEY (Event_Group_Id) REFERENCES Groups (Group_Id)
);
Erste Frage: habe ich richtig die Tabellen erstellt?
Ich konnte die Events
mit dem folgenden Code hinzufügen, aber ich konnte nicht erfolgreich die PK von Groups
als FK in Events
verbinden.
Hat jemand irgendwelche Vorschläge?
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BallinoraDBConnectionString1"].ConnectionString);
conn.Open();
string findGroupOfEvent = "SELECT Group_Id FROM Groups WHERE Group_Name ='" + DropDownListEventGroup.SelectedItem.ToString() + "'";
int groupId = Convert.ToInt32(findGroupOfEvent);
string insertQuery = "INSERT INTO Events (Event_Group_Id, Event_Type, Event_Title) VALUES (@GroupEventID, @Type, @Title)";
SqlCommand com = new SqlCommand(insertQuery, conn);
com.Parameters.AddWithValue("@GroupEventID", groupId);
com.Parameters.AddWithValue("@Type", DropDownListEventType.SelectedItem.ToString());
com.Parameters.AddWithValue("@Title", TextBoxET.Text);
com.ExecuteNonQuery();
Response.Redirect("ViewEvents.aspx");
Response.Write("Registration is successful");
conn.Close();
'aber ich konnte nicht erfolgreich die PK von Gruppen als FK in Events verbinden. <= Was meinst du damit? Außerdem sollten Sie Ihre SqlConnections in "using" -Blöcken verpacken und jedes Mal, wenn Sie mit der Datenbank interagieren möchten, eine neue Instanz erstellen (haben Sie keine zentrale SqlConnection, die Sie wiederverwenden!). Siehe auch [Best Practices - Ausführen von SQL-Anweisungen] (http://stackoverflow.com/documentation/.net/3589/ado-net/14261/best-practices-executing-sql-statements). – Igor
Wenn ich der Ereignistabelle eine neue Zeile hinzufüge, habe ich ein Dropdown-Menü, das denselben Text enthält, der sich in [Gruppenname] von [Gruppen] befindet. Ich möchte in der Lage sein, die Group_ID der gleichen Zeile wie die [Group_Name] im DropDown-Menü ausgewählt zu erhalten, und diesen Wert [Event_Group_ID] in der Tabelle [Events] zuweisen. – user2911539
Sie haben nichts UI erwähnt, bis jetzt zeigt diese Frage nur Sql DDL und ADO.NET. Dieser Teilcode sieht für mich alle gut aus mit einer Notiz, die Sie in Ihrem Parameter '@ GroupEventID'' 1' fest programmiert haben, was vielleicht Ihre Absicht ist oder auch nicht. Wenn Sie Hilfe mit Dropdown-Werten benötigen, sollten Sie den entsprechenden Code dafür anzeigen. – Igor