這是我目前運行的程式碼:
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"); } }
SELECT
子句應如下圖所示:然後,由於您獲得了多個值,因此您應該使用
ExecuteReader()
或使用DataAdapter
來Fill()
DataTable
,因此您可以使用所有值。如果您想成為一名成功的開發人員,那麼您應該自己編寫這些程式碼,以便您理解它,而不是只是複製我們為您提供的程式碼。如果您需要知道的是
mgroup_others
列中的值是否等於7
,您可以如下更新 SQL:這種方法的優點(與其他一些答案相比)是您仍然可以使用 ExecuteScalar ,因為您只讀取單一值。
如果您需要檢索
mgroup_others
的值並在 C# 程式碼中檢查它,您應該使用顯示如何使用ExecuteReader
或資料適配器
。