嘿,当我尝试向我的 mySql 查询添加参数时,我正在尝试输出到标签 如果我使用此 sql 语句“string sql =”SELECT login_Type FROM schooladmindb.login WHERE Password ='admin'AND Email ='admin';”手动将参数设置为“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 ---^
这会阻止您的代码完全 编译。所以...您可能想看看编译器给您的错误消息。
旁注,但重要:以纯文本形式存储用户密码是众所周知的坏主意。而且是对用户极度不负责任。用户密码应该用单向散列来隐藏,并且应该永远以其原始形式可读。甚至您作为系统所有者也不行。
关于c# - 使用参数查询 MySQL & C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529743/