如何让MySQL检查和验证来自另一列的静态结果

ha5z0ras  于 2023-05-05  发布在  Mysql
关注(0)|答案(3)|浏览(131)

下面是我当前运行的代码:

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");
        }
    }
pqwbnv8z

pqwbnv8z1#

如果你只需要知道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#代码中检查它,则应该使用其他显示如何使用ExecuteReaderDataAdapter的答案之一。

eivnm1vs

eivnm1vs2#

SELECT子句应该如下所示:

SELECT members_pass_hash, mgroup_others

然后,因为你得到了多个值,你应该使用ExecuteReader()或者使用DataAdapterFill()DataTable,这样你就可以使用所有的值。如果你想成为一名成功的开发人员,这是你应该自己编写的代码,这样你就可以理解它,而不仅仅是复制我们给予你的东西。

m3eecexj

m3eecexj3#

上面提到的SQL查询似乎是错误的,所以更改SELECT查询如下:

SELECT members_pass_hash, mgroup_others FROM core_members WHERE name = @name;

参考this文档了解如何编写正确的MySql查询。

相关问题