避免在表asp.net中重复记录

时间:2014-02-06 16:36:59

标签: c# asp.net sql

首先,我在我的网站上注册,然后我可以使用用户名和密码加入私人组。问题是如果我试图插入我已经加入的组中,我的表中会出现重复的记录。

所以我有一个会员表(MemberId-PK,用户名等),一个分配组表(MemberId -FK),(GroupId-FK)和一个组(GroupId-PK),名称,密码,运动)表。

这是我的代码:

 protected void Button1_Click(object sender, EventArgs e)
    {

        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Tom\Documents\BIS\4th Year\FYP\FYP\Back-up\test2\FitnessForYou V1-08.01\FitnessForYou\FitnessForYou\App_Data\MembersData.mdf;Integrated Security=True");

        con.Open();

        SqlCommand cmd2 = new SqlCommand("select COUNT(*)FROM Groups WHERE GroupName='" + txtGroupName.Text + "' and Password='" + txtPassword.Text + "'");




        cmd2.Connection = con;




        int OBJ = Convert.ToInt32(cmd2.ExecuteScalar());
        if (OBJ > 0)
        {

            con.Close();
            con.Open();

            cmd2.CommandText = "Insert into AssignGroups(MemberId,GroupId) Select Members.MemberId, Groups.GroupId From Members, Groups Where Members.Username= '" + lblRegistered.Text + "' And Groups.GroupName= '" + txtGroupName.Text + "'";



            Session["GroupName"] = txtGroupName.Text;




            cmd2.ExecuteNonQuery();
            cmd2.Clone();
            Response.Redirect("GroupMembers.aspx");
        }
        else
        {
            lblError.Text = "Invalid username or password";
            this.lblError.ForeColor = Color.Red;
        }
        con.Close();
    }

此代码会将您的记录插入tabeo,无论它是否有重复。我如何能够检查数据库以查看您是否已经是成员,因此在没有再次插入记录的情况下给他们提示。

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试添加cmd2.Connection = con;在执行命令之前。 上面代码中的命令和连接之间没有关系。

答案 1 :(得分:0)

我不是一个sql人,但这里有一个你可能想要运行的查询来检查一个成员是否已经分配给一个组。

  Select  Count(*) from AssignGroups where
  MemberId IN (Select MemberID from Members where Username='username')
  And GroupId IN (Select GroupID from Groups where GroupName='YourGroupName')

如果它返回正值,则该成员已分配给该组,因此不执行任何操作。 否则,不会分配成员,您可以运行插入查询。