Rumah > Soal Jawab > teks badan
Ini ialah kod yang sedang saya jalankan:
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"); } }
Kod di atas boleh log masuk ke pangkalan data saya. Masalahnya ialah ia hanya menyemak log masuk dan kata laluan. Sejak dua kerja ini, saya tidak tahu bagaimana untuk memanggil ruangan lain mgroup_others dan semak jika ada keputusan 7 di sana. Saya telah melampirkan foto pangkalan data saya di sini:
Ini adalah fungsi yang saya tulis semula:
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"); } }
P粉4594409912024-01-17 16:57:14
Klausa
SELECT
sepatutnya kelihatan seperti ini:
SELECT members_pass_hash, mgroup_others
Maka kerana anda mendapat berbilang nilai, anda harus menggunakan ExecuteReader()
或使用 DataAdapter
来 Fill()
DataTable
supaya anda boleh menggunakan semua nilai. Jika anda ingin menjadi pembangun yang berjaya, anda harus menulis kod ini sendiri supaya anda memahaminya, dan bukannya hanya menyalin kod yang kami berikan kepada anda.
P粉5338986942024-01-17 13:58:09
Jika anda hanya perlu tahu mgroup_others
列中的值是否等于 7
, anda boleh mengemas kini SQL seperti berikut:
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();
Kelebihan pendekatan ini (berbanding dengan beberapa jawapan lain) ialah anda masih boleh menggunakan ExecuteScalar kerana anda hanya membaca satu nilai.
Jika anda perlu mendapatkan semula mgroup_others
的值并在 C# 代码中检查它,您应该使用显示如何使用 ExecuteReader
或数据适配器
.