数据重复验证不起作用。

马克西库斯

新成员
已加入
2019年4月4日
留言内容
2
编程经验
Beginner
大家好,谢谢。

我正在开发一个注册Web表单,并且在将电子邮件地址保存到数据库之前,该代码在验证电子邮件地址是否存在方面存在一些问题。

这是我到目前为止所拥有的:
C#:
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = @"Data Source =(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MAIN.mdf;Integrated Security=True";
        conn.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "select * from [Users]";
        cmd.Connection = conn;

        SqlDataReader rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            如果(rd [2] .ToString()== TextBox2.Text)
            {
                flag = true;
                break;
            }
        }
        if (flag == true)
            Label1.Text = "find";
        else
            Label1.Text = "nof find";

    }

518
519


当您单击注册时,该代码假定是在数据库中福彩12选5走势图文本框(TextBox2)中的相同电子邮件,并且如果找到相同的电子邮件地址,请将Label(Label1)文本更改为Find。如果不是,它将指定它是"not find"并将用户注册到数据库中(我仍然需要编写该代码)。

我的问题是,它始终指定电子邮件地址为"not find"即使它在数据库中。

我尝试更改以下内容:
如果(rd [1] .ToString()== TextBox2.Text)
如果(rd [2] .ToString()== TextBox2.Text)
如果(rd [3] .ToString()== TextBox2.Text)

但标签仍需更改为"Not Find".

我是C#和Visual Studio的新手。本月才开始自我学习。 (只提它。)

再次感谢
 

马克西库斯

新成员
已加入
2019年4月4日
留言内容
2
编程经验
Beginner
我能够将代码重写为其他有效的代码,但是使用此代码,我无法验证电子邮件地址,但可以很好地验证用户名。

C#:
    protected void Button1_Click(object sender, EventArgs e)
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MainConnectionString"].ConnectionString))
        {
            con.Open();
            bool exists = false;
            // create a command to check if the username exists
            using (SqlCommand cmd = new SqlCommand("select count(*) from [Users] where Username = @Username", con))
            {
                cmd.Parameters.AddWithValue("Username", TextBox1.Text);
                exists = (int)cmd.ExecuteScalar() > 0;
            }

            // if exists, show a message error
            if (exists)
            {
                Label1.Visible = true;
                Label2.Visible = false;
            }
            else
            {
                try
                {
                    string insertQuery = "insert into Users(Username,Email,Password) values(@Uname,@Email,@Password)";
                    SqlCommand com = new SqlCommand(insertQuery, con);
                    com.Parameters.AddWithValue("@Uname", TextBox1.Text);
                    com.Parameters.AddWithValue("@Email", TextBox2.Text);
                    com.Parameters.AddWithValue("@Password", TextBox3.Text);
                    com.ExecuteNonQuery();
                    Response.Redirect("2.Manager.aspx");
                    Label2.Visible = true;
                    Label1.Visible = false;
                    Label2.Text = "New user has been added";
                    con.Close();
                }
                catch (Exception ex)
                {
                    Response.Write("error:" + ex.ToString());
                }
                con.Close();
            }
        }
    }
}
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,465
位置
悉尼,澳大利亚
编程经验
10+
If you want to count records that satisfy one or both or two conditions then add both conditions to your WHERE clause and separate them with an OR operator. The WHERE clause is basically just an if statement: if a record satisfies the following expression, include it in the result set.
 
最佳 底部