连接两个SQL Server表
本文关键字:SQL Server 两个 连接 | 更新日期: 2023-09-27 18:17:36
我正在尝试将以下两个表连接在一起:
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();
UI 添加下拉列表
将设计器屏幕截图https://i.stack.imgur.com/c0Ryz.png中的value
更改为1,然后更改为2等,以对应于您在数据库表中使用的id。这就是代码失败的原因,因为您无法将字符串名称转换为整数。值是唯一的id (int),名称是显示文本。
一个更好的、更易于维护的选择是在表单/控件加载时从数据库值动态地生成列表项。有很多已经问过的问题都有很好的答案,比如数据绑定ASP。. NET ListItem List to DropDownList issue
在构建下拉列表时,将文本转换为数据库中的GroupID
描述,您可以直接使用下面SQL中的ID查询组ID而不是组名称:
string findGroupOfEvent = "SELECT Group_Id FROM Groups WHERE Group_ID ='" + DropDownListEventGroup.SelectedItem.ToString() + "'"
你能提供以下细节吗,SQL似乎很好,数据库也很好:
-
您是否从UI获取DropDownListEventGroup的值并查询全局详细表,为您提供数据
-
分组表中是否有数据?
干杯Sudeep