c# - 使用参数查询 MySQL & C#

标签 c# mysql asp.net

嘿,当我尝试向我的 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 一样输入?根据显示的代码,我不能肯定知道这个,但是您可能在这里使用了错误的值。您必须调试才能找到答案。

但要点是,如果 TxtpasswordTextBox 或其他类似控件,您可能需要它的 .Text 属性。 .ToString() 只会给你类的名称。


此外,您是否注意到您对密码电子邮件使用了相同的用户输入?这可能是你的错字。同样,我不能确定。但值得您检查一下。


你这里也有错别字:

cmd.Parameters.AddWithValue("@password", password.);
//                                 right here ---^

这会阻止您的代码完全 编译。所以...您可能想看看编译器给您的错误消息。


旁注,但重要:以纯文本形式存储用户密码是众所周知的坏主意。而且是对用户极度不负责任。用户密码应该用单向散列来隐藏,并且应该永远以其原始形式可读。甚至您作为系统所有者也不行。

关于c# - 使用参数查询 MySQL & C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529743/

相关文章:

asp.net - 设置asp.net验证器的顺序

c# - 线程循环!!意想不到的行为?

c# - 获取进程 RAM 使用情况(以兆字节为单位)

mysql - 我可以使用驼峰式别名来命名 SQL 的结果列吗?

java - 检查是否可以插入 MySQL 数据库

php - 如何从三个不同的表php中查询总计的SELECT SUM

ASP.NET:每个用户缓存

c# - ASP.NET MVC 4 中使用 aspnet 身份进行基于角色的身份验证

java - 使用 tcp 从 java 发送 double 到 C#

c# - 如何在 C# 中将日期时间转换为日期