如何在 Visual Studio 中搜索数据库? (C#)

How to search database in Visual Studio? (C#)

我正在做一个业余项目(学生,不是家庭作业,只是假期的好奇心),这将是我的简单个人密码 manager/vault。这将是一个 windows 应用程序。我希望它支持不止一个用户。现在我有了登录屏幕和其他功能,我很难找到一种简单有效的方法来检查用户的登录名和密码是否正确。我将信息存储在一个名为 Users 的简单 SQL table 中(下图)。现在,我想得到 bool 结果,这两个字符串(用户名,密码)是否在数据库中。我将在下面包含一些代码和屏幕截图。任何帮助表示赞赏!

P.S.: 我对 mySQL(Oracle) 非常熟悉,我只是找不到一个好的方法来做到这一点而不是荒谬的。 :)

namespace KeyLocker.Database {
[Serializable]
public class UserDatabase {
    public void AddUser(string username,string password,string question,string answer) {
        using(var db = new KeyLockerContext()) {
            db.Add(new User { Username = username,Password = password,SecurityQuestion = question,SecurityAnswer = answer });
            db.SaveChanges();
        }
    }

    public bool CheckUser(string username,string password) {
        using(var db = new KeyLockerContext()) {
            /*here i need to find out if username is present in database
              and if it is, i need to find out if the password is correct*/
        }
    }
}

}

Table Users ScreenShot

Table SQL detail

乍一看,执行您的想法的最简单代码似乎是:

public bool CheckUser(string username,string password) {
    using(var db = new KeyLockerContext()) {

        // Check if that combination already exists in DB.
        var result = db.Users.Where(x => x.Username == username && x.Password == password).SingleOrDefault();

        // See if result has a value, SingleOrDefault() returns null if no match
        return (result == null);
    }
}

EDIT/Disclaimer:由于似乎有些混乱,这是一个关于如何快速检查数据库中是否已存在具有特定值的对象的想法 - 而不是完整的身份验证库。您永远不应存储明文密码。