单击“登录”按钮时,我想遍历表中的列并检查是否发生匹配。我该怎么做呢?我已经连接到一个数据库,我正在从数据库中读取并写入数据库。我不确定如何遍历数据库。
PS 我是 C# 和视觉工作室的新手。我在 C# 方面没有太多麻烦,因为我是从 Java 过来的,但是我很难掌握 Visual Studio。
单击“登录”按钮时,我想遍历表中的列并检查是否发生匹配。我该怎么做呢?我已经连接到一个数据库,我正在从数据库中读取并写入数据库。我不确定如何遍历数据库。
PS 我是 C# 和视觉工作室的新手。我在 C# 方面没有太多麻烦,因为我是从 Java 过来的,但是我很难掌握 Visual Studio。
这很简单,你会看到。
SqlConnection myConnection = new SqlConnection(@"Server = (Local); Integrated Security = True;" + "Database = insertDataBaseName"); // Assuming (Local)
myConnection.Open();
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = ("SELECT UserName, Password,from Login"); // Where Login is your table . UserName and Password Columns
SqlDataReader myReader = myCommand.ExecuteReader();
bool login = false;
while (myReader.Read())
{
if (userNameBox.Text.CompareTo(myReader["UserName"].ToString()) == 0 && passwordBox.Text.CompareTo(myReader["Password"].ToString()) == 0) // A little messy but does the job to compare your infos assuming your using a textbox for username and password
{
login = true;
}
}
if (login)
{
//Your're in.
}
else
{
MessageBox.Show("Invalid UserName or Password", "Access Denied"); // Error message
}
myReader.Close();
myConnection.Close(); // Just close everything
希望这可以帮助。如果您对此代码部分有任何疑问,请不要犹豫。
在 sql 中这样的东西会有所帮助
Select top(1) from Users where Id = @Id
或在 linq
var user = (from u in users
where u.Id == id
select u).SingleOrDefault();
如果您正在检查用户名密码验证,我认为您不应该获取所有用户记录并通过它循环迭代。如果您获得 100000 个用户注册怎么办?你真的想迭代 100000 次吗?真的吗 ?
您可能应该查询您正在寻找的特定记录
像这样的东西
SELECT TOP 1 UserID,FIRSTNAME,LASTNAME,HASHED_PASSWORD,SALT WHERE USERNAME='kristy'
在您的数据库中再次执行该查询并查看是否存在任何记录,如果存在一条记录,现在您可以使用您拥有的数据验证密码。