我在按钮点击事件中有这个:
protected void btn_login_Click(object sender, EventArgs e)
{
authentication auth = new authentication();
bool emailExists = auth.checkEmail(System.Convert.ToString(txt_email.Text));
if (emailExists == true)
{
btn_create.Text = "Email doesnt exist";
}
else
{
btn_create.Text = "Email exists";
}
}
它将电子邮件发送到我的身份验证类中的checkEmail方法:
public bool checkEmail(string email)
{
bool emailExists = false;
usersTableAdapters.UsersTableAdapter user = new usersTableAdapters.UsersTableAdapter();
users.UsersDataTable userDataTable = user.checkEmail(email);
if (userDataTable.Rows.Count == 0)
{
emailExists = false;
}
else
{
emailExists = true;
}
return emailExists;
}
checkEmail查询是“SELECT COUNT(email)AS电子邮件来自People WHERE(email =?)”
然而,当我进行调试时,即使电子邮件已存在于我的数据库中,它总是属于if(emailExists == true)语句,有人知道为什么吗?
答案 0 :(得分:3)
您输入的查询将始终有1个结果。如果要继续使用该查询,则应检查第一个结果的第一列(“email”),并检查是否= = 0。
答案 1 :(得分:0)
无法在评论中添加代码标记,因此重新发布我将如何重写checkEmail方法:(假设如何设置UsersTableAdapter类型)
public bool checkEmail(string email)
{
usersTableAdapters.UsersTableAdapter user = new usersTableAdapters.UsersTableAdapter();
users.UsersDataTable userDataTable = user.checkEmail(email);
return userDataTable.Rows[0][0] > 0;
}
答案 2 :(得分:0)
我发现我必须检查行的索引,在这种情况下为0,然后检索并将电子邮件列中的值存储到int
DataRow row = userDataTable.Rows[0];
int rowValue = System.Convert.ToInt16(row["email"]);