Voici le code que j'utilise actuellement :
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"); } }
Le code ci-dessus peut se connecter à ma base de données. Le problème est qu'il vérifie uniquement l'identifiant et le mot de passe. Puisque ces deux fonctionnent, je ne sais pas comment appeler une autre colonne mgroup_others et vérifier s'il y a un résultat de 7 là-bas. J'ai joint une photo de ma base de données ici :
Voici la fonction que j'ai réécrite :
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"); } }
La clause
SELECT
devrait ressembler à ceci :Ensuite, puisque vous obtenez plusieurs valeurs, vous devez utiliser
ExecuteReader()
或使用DataAdapter
来Fill()
DataTable
afin de pouvoir utiliser toutes les valeurs. Si vous voulez devenir un développeur performant, vous devez écrire ce code vous-même afin de le comprendre, plutôt que de simplement copier le code que nous vous fournissons.Si tout ce que vous devez savoir est
mgroup_others
列中的值是否等于7
, vous pouvez mettre à jour le SQL comme suit :L'avantage de cette approche (par rapport à certaines autres réponses) est que vous pouvez toujours utiliser ExecuteScalar puisque vous ne lisez qu'une seule valeur.
Si vous avez besoin de récupérer
mgroup_others
的值并在 C# 代码中检查它,您应该使用显示如何使用ExecuteReader
或数据适配器
.