Dies ist der Code, den ich gerade ausführe:
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"); } }
Der obige Code kann sich bei meiner Datenbank anmelden. Das Problem ist, dass nur Login und Passwort überprüft werden. Da diese beiden funktionieren, weiß ich nicht, wie ich eine weitere Spalte mgroup_others aufrufen und prüfen soll, ob dort ein Ergebnis von 7 steht. Ich habe hier ein Foto meiner Datenbank angehängt:
Dies ist die Funktion, die ich umgeschrieben habe:
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"); } }
SELECT
子句应如下所示:然后,由于您获得了多个值,因此您应该使用
ExecuteReader()
或使用DataAdapter
来Fill()
DataTable
,因此您可以使用所有值。如果您想成为一名成功的开发人员,那么您应该自己编写这些代码,以便您理解它,而不是仅仅复制我们为您提供的代码。如果您需要知道的是
mgroup_others
列中的值是否等于7
,您可以按如下方式更新 SQL:这种方法的优点(与其他一些答案相比)是您仍然可以使用 ExecuteScalar ,因为您只读取单个值。
如果您需要检索
mgroup_others
的值并在 C# 代码中检查它,您应该使用显示如何使用ExecuteReader
或数据适配器
。