[英]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
一樣是一種輸入嗎? 根據顯示的代碼,我無法確定這一點,但是您在此處可能使用了錯誤的值。 您必須調試才能找出答案。
但是要點是,如果Txtpassword
是TextBox
或其他類似控件,則可能需要其.Text
屬性。 .ToString()
只會為您提供類的名稱。
此外,您是否注意到密碼和電子郵件使用的是相同的用戶輸入? 這可能是您的錯字。 同樣,我不確定。 但是值得一試。
您在這里也有錯別字:
cmd.Parameters.AddWithValue("@password", password.);
// right here ---^
這是防止在編譯所有的代碼。 所以...您可能想看看編譯器給您的錯誤消息。
附帶說明,但也很重要 :以純文本格式存儲用戶密碼是一個絕妙的主意 。 這對用戶是完全不負責任的。 用戶密碼應以1向哈希來掩蓋,並且絕不能以其原始形式可讀。 您甚至都不是系統所有者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.