使用参数 MySQL 和 C# 进行查询



嘿,当我尝试向我的 mySql 查询添加参数时,我正在尝试输出到标签如果我使用此sql语句"字符串sql ="从学校管理员DB.login中选择login_Type",则工作正常,其中密码='管理员'和电子邮件='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 ---^

这会阻止您的代码编译。 所以。。。您可能需要查看编译器为您提供的错误消息。

<小时 />

旁注,但很重要:以纯文本形式存储用户密码是一个众所周知的坏主意。 这对用户来说是非常不负责任的。 用户密码应用单向哈希遮盖,并且永远不应以其原始形式读取。 甚至不是由您作为系统所有者。

相关内容

  • 没有找到相关文章

最新更新