使用参数查询MySQL& C#

时间:2016-02-20 22:14:58

标签: c# mysql asp.net

嘿我试图在我的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时,我没有输出,我不知道从哪里开始

1 个答案:

答案 0 :(得分:4)

您正在寻找结果中的第二列:

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 ---^

这阻止了您的代码完全编译 。所以......你可能想看一下编译器给你的错误信息。

附注,但重要:用纯文本存储用户密码是一个着名的坏主意 。这对用户来说是非常不负责任的。用户密码应该用单向哈希模糊,并且永远不会以原始形式可读。您甚至不是系统所有者。