这是我当前运行的代码:
private void button1_Click(object sender, EventArgs e)
    {
        string server = "207.244.70.217";
        string database = "nextgene_NGH";
        string uid = "EXAMPLEUID";
        string password = "EXAMPLEPASSWORD";
        string ssl = "None";
        string connectionString = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};SSL Mode={ssl};";    
        using var connection = new MySqlConnection(connectionString);
        connection.Open();
        using var command = new MySqlCommand("SELECT members_pass_hash FROM core_members && WHERE name = @name;", connection);
        command.Parameters.AddWithValue("@name", maskedTextBox1.Text);
        var hashedPassword = (string) command.ExecuteScalar();
        if (!(hashedPassword is null && !BCrypt.Net.BCrypt.Verify(maskedTextBox2.Text, hashedPassword)))
        {
            
            MessageBox.Show("Login Successful");
        }
    }
上面的代码可以登录我的数据库。问题是它只检查登录名和密码。由于这两个工作,我不知道如何调用另一列 mgroup_others 并检查那里是否有 7 的结果。我在这里附上了我的数据库的照片:
这是我重写的函数:
private void button1_Click(object sender, EventArgs e)
    {
        string server = "207.244.70.217";
        string database = "nextgene_NGH";
        string uid = "EXAMPLEUID";
        string password = "EXAMPLEPASSWORD";
        string ssl = "None";
        string vipcheck = "7";
        string connectionString = $"SERVER={server};DATABASE={database};UID={uid};PASSWORD={password};SSL Mode={ssl};";    
        using var connection = new MySqlConnection(connectionString);
        connection.Open();
        using var command = new MySqlCommand("SELECT members_pass_hash AND mgroup_others FROM core_members && WHERE name = @name;", connection);
        command.Parameters.AddWithValue("@name", maskedTextBox1.Text);
        var hashedPassword = (string) command.ExecuteScalar();
        if (!(hashedPassword is null && !BCrypt.Net.BCrypt.Verify(maskedTextBox2.Text && vipcheck != mgroup_others, hashedPassword)))
        {
            
            MessageBox.Show("Login Successful");
        }
    }            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
SELECT子句应如下所示:然后,由于您获得了多个值,因此您应该使用
ExecuteReader()或使用DataAdapter来Fill()DataTable,因此您可以使用所有值。如果您想成为一名成功的开发人员,那么您应该自己编写这些代码,以便您理解它,而不是仅仅复制我们为您提供的代码。如果您需要知道的是
mgroup_others列中的值是否等于7,您可以按如下方式更新 SQL:using var command = new MySqlCommand(""" SELECT members_pass_hash FROM core_members WHERE name = @name AND mgroup_others = 7; """, connection); command.Parameters.AddWithValue("@name", maskedTextBox1.Text); var hashedPassword = (string) command.ExecuteScalar();这种方法的优点(与其他一些答案相比)是您仍然可以使用 ExecuteScalar ,因为您只读取单个值。
如果您需要检索
mgroup_others的值并在 C# 代码中检查它,您应该使用显示如何使用ExecuteReader或数据适配器。