猿问

检查用户名或用户电子邮件已存在

我在一个简单的注册页面中工作,在该页面中,用户无法输入相同的用户名或电子邮件,我编写了一个代码,阻止用户输入用户名,但该代码有效,但是当我尝试阻止用户输入相同的用户名时或通过电子邮件发送无效的邮件。


我的问题是,“如何添加用户无法输入已经存在的电子邮件的其他条件?”


我试图在这段代码中做到这一点,但是没有成功:


protected void Button_Click(object sender, EventArgs e)

{

  SqlConnection con = new SqlConnection( ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString );

  SqlCommand cmd1 = new SqlCommand("select 1 from Table where Name =@UserName", con);

  SqlCommand cmd2 = new SqlCommand("select 1 from Table where Email=@UserEmail", con);


  con.Open();

  cmd1.Parameters.AddWithValue("@UserName", Name_id.Text);

  cmd2.Parameters.AddWithValue("@UserEmail", Email_id.Text); 


  using (var dr1 = cmd1.ExecuteReader())

  {

    if (dr1.HasRows)

    {

      Label1.Text = "user name already exists";

    }

    using (var dr2 = cmd2.ExecuteReader())

    {

      if (dr2.HasRows)

      {

        Label1.Text = "email already exists";

      }

      else

      {

        dr1.Close();

        dr2.Close();

        //add new users

        con.Close();

      }

    }

  }  

}

但是我得到这个错误:


已经有与此命令相关联的打开的DataReader,必须先关闭它。


慕慕森
浏览 1010回答 3
3回答

交互式爱情

您已经在First内部打开了另一个DataReader,这就是造成问题的原因。在这里,我重新安排了您的代码SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);SqlCommand cmd1 = new SqlCommand("select 1 from Table where Name =@UserName", con),cmd2 = new SqlCommand("select 1 from Table where Email=@UserEmail", con);con.Open();cmd1.Parameters.AddWithValue("@UserName", Name_id.Text);cmd2.Parameters.AddWithValue("@UserEmail", Email_id.Text);bool userExists = false, mailExists = false;using (var dr1 = cmd1.ExecuteReader())     if (userExists = dr1.HasRows) Label1.Text = "user name already exists";using (var dr2 = cmd2.ExecuteReader())     if (mailExists = dr2.HasRows) Label1.Text = "email already exists";if (!(userExists || mailExists)) {     // can add User}

神不在的星期二

您需要先关闭一个数据读取器,然后再打开另一个。尽管这不是我的方法,但是您可以通过在每次之后关闭datareader来处理运行时错误IF:using (var dr1 = cmd1.ExecuteReader()){    if (dr1.HasRows)    {        string Text = "user name already exists";    }    dr1.Close();}using (var dr2 = cmd2.ExecuteReader()){    if (dr2.HasRows)    {        string ext = "email already exists";    }    else    {        //add new users    }    dr2.Close();}con.Close();
随时随地看视频慕课网APP
我要回答