我尝试检查此电子邮件是否已注册。我想检查当用户在注册期间在电子邮件文本框中输入电子邮件时,如果电子邮件已经被其他用户注册,则会显示消息。
Aspx代码
protected void txtEmail_TextChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select count(Email) as Email from tblUsers where Email='"+txtEmail+"'",con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
string iEmail = dr["Email"].ToString();
if (iEmail == "0")
{
Label1.Visible = true;
Label1.Text = "This email already registered..";
}
}
}
答案 0 :(得分:1)
此查询的增益效果可以做些什么,
第一:计数查询仅返回A“CELL”不是行或行。因此,您可以使用cmd.ExecuteScalar()
进行此查询,但应将其强制转换为int mailCount = (int)cmd.ExecuteScalar();
之类的整数
那么你可以将mailCount与0进行比较,如果相等,则邮件尚未注册。
第二:而不是
SqlCommand cmd = new SqlCommand("select count(Email) as Email from tblUsers where Email='"+txtEmail+"'",con); SqlDataReader dr;
这个,你应该使用
SqlCommand cmd = new SqlCommand("select count(Email) as Email from tblUsers WHERE Email = @Email", con);
cmd.Parameters.AddWithValue("@Email",txtEmail.Text.Trim());
我认为您的问题是“txtEmail”,您应该使用txtEmail.Text.Trim()
答案 1 :(得分:0)
请确保为该文本框启用AutoPostBack="true"
,如下所示: -
<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
希望这会有帮助吗?