我正在设计一个网页表单,以便将数据插入到sql数据库中。我只想检查已经存在的唯一的电子邮件ID。
代码:
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(TextBox2.Text))
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\aayush\\Documents\\Visual Studio 2010\\WebSites\\JustDial\\App_Data\\Database.mdf';Integrated Security=True;User Instance=True");
con.Open();
SqlCommand cmd = new SqlCommand("select shop_email from shop where shop_email=@email", con);
cmd.Parameters.AddWithValue("@email", TextBox2.Text);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
Label1.Text = "email id already exists";
}
con.Close();
}
}
我尝试了上面的代码,但它没有工作,但标签没有显示任何内容。任何帮助都会感激。
答案 0 :(得分:3)
问题:您正在TextBox_TextChanged
事件处理程序中编写代码,以便每当TextBox
发生更改时都会调用它,并且它不会给您除非您输入完整的Email-ID
。
解决方案1:您需要在一些Button Click事件处理程序中编写上述代码,如下所示:
protected void btnSearch_Click(object sender,EventArgs e)
{
//Write your code here
}
解决方案2 :如果您希望将代码保留在TextBox TextChanged
事件处理程序中,但仍希望识别EmailID
您可以使用LIKE
运算符而不是=
运算符
试试这个:
SqlCommand cmd = new SqlCommand("select shop_email from shop
where shop_email LIKE @email", con);
cmd.Parameters.AddWithValue("@email", "'%"+TextBox2.Text +"%'"+);
答案 1 :(得分:0)
如果用户/电子邮件不存在,请尝试添加else语句 同时将此代码移动到按钮单击事件或其他一些事件。在文本框文本更改事件中,它不会返回结果。
using (var con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\aayush\\Documents\\Visual Studio 2010\\WebSites\\JustDial\\App_Data\\Database.mdf';Integrated Security=True;User Instance=True"))
using(var cmd = new SqlCommand("select 1 from shop where UserID=@UserID", con))
{
con.Open();
cmd.Parameters.AddWithValue("@UserID", TextBox2.Text);
using (var dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
Label1.Text = "userid already exists";
}
else
{
Label1.Text = "userid doesn't exists";
//Create new user
}
}
}