我想下面的2個表連接在一起:連接兩臺SQL Server表
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)
);
第一個問題:有我創建的表是否正確?
我已經能夠使用下面的代碼添加到Events
,但是我還沒有能夠成功地將Groups
的PK作爲Events
中的FK連接。
有沒有人有任何建議?
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();
'但我一直沒能組的PK成功連接爲FK在Events.' <=你這是什麼意思?你也應該把你的SqlConnections封裝在''using''塊中,並且每次你想與數據庫進行交互時都要創建一個新的實例(沒有一個可重用的中心SqlConnection!)。另請參見[最佳實踐 - 執行SQL語句](http://stackoverflow.com/documentation/.net/3589/ado-net/14261/best-practices-executing-sql-statements)。 – Igor
向Event表添加新行時,我有一個下拉菜單,其中包含與[Groups]的[Group_Name]中相同的文本。我希望能夠獲得與DropDown菜單中選擇的[Group_Name]相同行的Group_ID,並將該值分配給[Events]表中的[Event_Group_ID]。 – user2911539
你沒有提到任何UI,到目前爲止,這個問題只顯示了Sql DDL和ADO.NET。這部分代碼對我來說看起來很好,只需要注意一下,你在'@ GroupEventID'參數中硬編碼了'1',這可能是也可能不是你的意圖。如果你需要下拉值的幫助,你應該顯示相關的代碼。 – Igor