C#检查同一记录中的2个字段与用户输入的内容相匹配,例如用户名&密码

时间:2011-03-24 17:16:21

标签: c# login bindingsource

我想要一个登录类型表单,其中Employee输入他们的EmployeeID和DOB。我到目前为止的代码是检查两个文本框都不是空白,确保EmployeeID存在,但我不知道如何检查Employee的DOB是否与他们输入的相同。有些代码如下。

if ((txtEmployeeID.TextLength != 0) && (txtDOB.TextLength != 0))
{

      employeesBindingSource.Filter = "EmployeeID ='" + txtEmployeeID.Text + "'";

      if (employeesBindingSource.Count > 0)
      {

           // DOES DOB FOR EMPLOYEE MATCH - NOT SURE WHAT TO PUT HERE

      }
}

3 个答案:

答案 0 :(得分:3)

为此,我们需要Employee DOB变量 - 用此替换DataOfBirthVariable。

if ((txtEmployeeID.TextLength != 0) && (txtDOB.TextLength != 0))
{

      employeesBindingSource.Filter = "EmployeeID ='" + txtEmployeeID.Text + "'";

      if (employeesBindingSource.Count > 0 && DataOfBirthVariable == txtDob)
      {


      }
}

此外,最佳做法是使用!String.IsNullOrEmpty(txtEmployeeID)而不是.TextLength - 只是一个提示。

答案 1 :(得分:1)

假设您尝试匹配的DoB是DateTime

DateTime enteredDoB;
bool matchedDoB;

if (DateTime.TryParse(txtDOB, out enteredDoB))
{
    matchedDoB = employeeDoB.Equals(enteredDoB);
}

请参阅DateTime.TryParse

答案 2 :(得分:0)

日期问题是让员工以正确的格式输入数据。

  • 1970年1月1日
  • 1/1/1970
  • 1/1/70
  • 70年1月1日
  • 1月01日,'70

同一事物的所有变体。

您必须强制员工以您需要的格式输入日期字段。

static char DATESPLITTER = '/'; // define this accordingly
static DateTime NODATE = new DateTime(1, 1, 1900);

private DateTime GetDate(string dateValue) {
  if (!String.IsNullOrEmpty(dateValue) {
    string[] split = dateValue.Split(DATESPLITTER);
    if (split.Length == 3) {
      int m = Convert.ToInt32(split[0]);
      if ((0 < m) && (m < 13)) {
        int d = Convert.ToInt32(split[1]);
        if ((0 < d) && (d < 32)) {
          int y = Convert.ToInt32(split[2]);
          if ((0 < y) && (y < DateTime.Now.Year)) {
            if (y < 100) y += 2000;
            return new DateTime(m, d, y);
          }
        }
      }
    }
  }
  return NODATE;
}

这与我在代码中使用的一个小路由非常相似。