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

我想问一下如何在 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++;

}


偶然的你
浏览 170回答 3
3回答

一只名叫tom的猫

你这样做是错的。你需要从读者那里阅读。这是你应该做的:  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++;     }   }

陪伴而非守候

查看代码,您似乎将文本框作为密码参数传递:cmd.Parameters.AddWithValue("@pas", password);然后你做这个检查:if (rez == password.Text)这表明这password是一个文本框。所以正确的代码应该是:cmd.Parameters.AddWithValue("@pas", password.Text);我还将假设这username是一个文本框,因此当您创建用户名参数时,您应该使用:cmd.Parameters.AddWithValue("@usr", username.Text);

慕尼黑8549860

如果文本框 id 是“用户名”和“密码”,那么您需要传递该文本框的值,如下所示:“用户名.文本”和“密码.文本”然后你就可以登录了。
打开App,查看更多内容
随时随地看视频慕课网APP