连接两个SQL Server表

时间:2016-11-13 10:46:49

标签: c# sql asp.net 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中成功将Events的PK连接为FK。< / p>

有人有任何建议吗?

  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

Adding Dropdown Items

3 个答案:

答案 0 :(得分:0)

将设计器屏幕截图https://i.stack.imgur.com/c0Ryz.png中的value更改为1,然后将2等与您在数据库表中使用的ID相对应。这就是您的代码失败的原因,因为您无法将字符串名称转换为整数。值是唯一的id(int),名称是显示文本。

更好,更易维护的选项是在表单/控件加载时从数据库值动态生成列表项。关于这方面有很多已经问过的问题,例如Databind ASP.NET List of ListItem to DropDownList issue

答案 1 :(得分:0)

在构建下拉列表时从数据库发送到GroupID描述文本,并且您可以直接使用以下SQL中的ID查询组ID而不是组名:

string findGroupOfEvent = "SELECT Group_Id FROM Groups WHERE Group_ID ='" + DropDownListEventGroup.SelectedItem.ToString() + "'"

答案 2 :(得分:-1)

您能否提供以下详细信息,SQL似乎很好,数据库也很好看:

  1. 您是否从UI获得 DropDownListEventGroup 的价值并查询全局详细信息表,为您提供数据。

  2. 您是否在分组表中有数据?

  3. 干杯 萨迪普