嘿我试图在我的mySql查询中添加参数时输出到标签 如果我使用此sql语句手动将参数设置为“admin”,它可以正常工作“string sql =”SELECT login_Type FROM schooladmindb.login WHERE Password ='admin'AND Email ='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时,我没有输出,我不知道从哪里开始
答案 0 :(得分:4)
您正在寻找结果中的第二列:
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 ---^
这阻止了您的代码完全编译 。所以......你可能想看一下编译器给你的错误信息。
附注,但重要:用纯文本存储用户密码是一个着名的坏主意 。这对用户来说是非常不负责任的。用户密码应该用单向哈希模糊,并且永远不会以原始形式可读。您甚至不是系统所有者。