在SQL中不区分大小写?

时间:2013-11-30 20:28:55

标签: c# sql

在我将我的内容保存到SQL后,在我的登录表单上,如果我尝试从数据库中获取信息,即使提供的信息是双向输入 - 大写或小写,信息也会将评估传递给true。这是我的登录代码,请帮助我理解。我正在与实体框架联系数据库.currUser是一个变量,我保存当前的用户信息。

try
      {
          if (!string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password))
          {
              var users = from c in context.CustomerTables where c.username == username && c.password == password select c;
              List<CustomerTable> table = users.ToList();
              if (table.Any())
              {
                  MessageBox.Show("Successfully logged in.\nWelcome " + username + "!", "Welcome", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                  currUser.username = username;
                  currUser.password = password;
                  return true;
              }
              else
              {
                  MessageBox.Show("Username or password is invalid.", "Error logging in", MessageBoxButton.OK, MessageBoxImage.Error);
                  return false;
              }
          }
          else
          {
              MessageBox.Show("Username and password format is invalid!","Null username or password",MessageBoxButton.OK,MessageBoxImage.Warning);
              return false;
          }

1 个答案:

答案 0 :(得分:0)

最简单的解决方法是替换

if (table.Any())

if (table.Any() && table[0].username == username && table[0].password == password)

这样做的原因是默认情况下C#中的字符串比较区分大小写。