簡體   English   中英

使用參數MySQL和C#查詢

[英]Query with paramaters MySQL & C#

嘿,當我嘗試將參數添加到mySql查詢中時,我嘗試輸出到標簽,如果我使用此sql語句手動將參數設置為“ admin”,則該字符串就可以正常工作“ string sql =” SELECT login_Type FROM schooladmindb.login WHERE Password ='admin'AND電子郵件='admin'“;” 但是當輸入什么變量時我沒有輸出

      string password = Txtpassword.ToString();
      string email = Txtpassword.ToString();
     string sql = "SELECT login_Type FROM schooladmindb.login WHERE Password = @password AND Email = @email";

    MySqlConnection con = new MySqlConnection("");
    con.Open();
    MySqlCommand cmd = new MySqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@password", password.);
    cmd.Parameters.AddWithValue("@email", email);


    MySqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
          string type = reader.GetString(1);
          Lbltest.Text = type; 


        //data2txtz.Text = reader.GetString("id");
        //datatxt.Text = reader.GetString("userId");
    }

當我在兩個文本框中都輸入admin時,我沒有任何輸出,我不確定從這里到哪里

您正在搜索結果中的第二列:

reader.GetString(1)

但是只選擇一列:

SELECT login_Type FROM schooladmindb.login

獲取第一列:

reader.GetString(0)

另外,什么是Txtpassword 您正在對其調用.ToString() ,但是它像TextBox一樣是一種輸入嗎? 根據顯示的代碼,我無法確定這一點,但是您在此處可能使用了錯誤的值。 您必須調試才能找出答案。

但是要點是,如果TxtpasswordTextBox或其他類似控件,則可能需要其.Text屬性。 .ToString()只會為您提供類的名稱。


此外,您是否注意到密碼電子郵件使用的是相同的用戶輸入? 這可能是您的錯字。 同樣,我不確定。 但是值得一試。


您在這里也有錯別字:

cmd.Parameters.AddWithValue("@password", password.);
//                                 right here ---^

這是防止編譯所有的代碼。 所以...您可能想看看編譯器給您的錯誤消息。


附帶說明,但也很重要 :以純文本格式存儲用戶密碼是一個絕妙的主意 這對用戶是完全不負責任的。 用戶密碼應以1向哈希來掩蓋,並且不能以其原始形式可讀。 您甚至都不是系統所有者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM