为了账号安全,请及时绑定邮箱和手机立即绑定

如何登录 C# Windows 窗体(从 MySQL 服务器/数据库获取数据)?

如何登录 C# Windows 窗体(从 MySQL 服务器/数据库获取数据)?

C#
偶然的你 2021-12-25 16:41:51
我想问一下如何在 Windows 窗体中实现登录功能,前提是我有两个字段用户名和密码。在数据库中,我有一个表users,其中有 2 个字段 - 用户名和密码。我想从数据库中获取密码,然后将其与文本框字段中输入的密码进行比较,如果密码相同,我想打开 /show/ 一个新表单。但是,我总是在catch代码块中。我想问一下这是为什么?try{    if (i == 2)    {        Application.Exit();    }    conn.Open();    string query = "select password from users where username = @usr and password = @pas";    MySqlCommand cmd = new MySqlCommand(query, conn);    cmd.Parameters.AddWithValue("@usr", username);    cmd.Parameters.AddWithValue("@pas", password);    MySqlDataReader myreader = cmd.ExecuteReader();    string rez = (string)myreader.ToString();    if (rez == password.Text)    {        frmMain mainF = new frmMain();        mainF.Show();    }}catch (Exception ex){    MessageBox.Show("Username or password is incorrect!");    i++;}
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

你这样做是错的。你需要从读者那里阅读。这是你应该做的:


  try

  {

    if (i == 2)

    {

      Application.Exit();

    }


    conn.Open();

  string query = "select password from users where username = @usr and password = @pas";


    MySqlCommand cmd = new MySqlCommand(query, conn);

    cmd.Parameters.AddWithValue("@usr", username);

    cmd.Parameters.AddWithValue("@pas", password);


    MySqlDataReader myreader = cmd.ExecuteReader();


    var password = string.Empty;

    while(myreader.Read())

    {

     password = myreader["password"];

    }



     if (password.Equals(password.Text))

     {

      frmMain mainF = new frmMain();

      mainF.Show();

     }

     else

     {

       MessageBox.Show("Username or password is incorrect!");

       i++;

     }

   }


查看完整回答
反对 回复 2021-12-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

查看代码,您似乎将文本框作为密码参数传递:

cmd.Parameters.AddWithValue("@pas", password);

然后你做这个检查:

if (rez == password.Text)

这表明这password是一个文本框。

所以正确的代码应该是:

cmd.Parameters.AddWithValue("@pas", password.Text);

我还将假设这username是一个文本框,因此当您创建用户名参数时,您应该使用:

cmd.Parameters.AddWithValue("@usr", username.Text);


查看完整回答
反对 回复 2021-12-25
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果文本框 id 是“用户名”和“密码”,那么您需要传递该文本框的值,如下所示:

“用户名.文本”和“密码.文本”

然后你就可以登录了。


查看完整回答
反对 回复 2021-12-25
  • 3 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信