Страница входа в MySQL

c# mysql

52 просмотра

1 ответ

Я сделал страницу входа, которая проверяет базу данных на наличие имени пользователя и пароля, но она просто позволяет вводить любое имя пользователя и пароль, не отвергает их, не уверен, почему я новичок в этом, ниже приведена форма, я ввел данные в базу данных с имя_пользователя и пароль, так что это не то, что должно быть что-то в коде, но когда я закрываюсь из программы, он также говорит, что пароль неправильный, что странно, это только показывает, что, как только я действительно щелкнул близко к программе, это странно

namespace LoginApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PassTextBox.PasswordChar = '•';
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string MyConnection = "datasource=localhost;port=3306;username=user;password=pass";
                MySqlConnection MyConn = new MySqlConnection(MyConnection);
                MySqlCommand MyCommand = new MySqlCommand("select * from etool.login where user_name='" + this.UserTextBox.Text + "' and password='" + this.PassTextBox.Text + "' ;", MyConn);
                MySqlDataReader MyReader;

                MyConn.Open();
                MyReader = MyCommand.ExecuteReader();
                int count = 0;
                while (MyReader.Read())
                {
                    Console.WriteLine(MyReader[count]);
                    count++;
                }

                MessageBox.Show("Username and password is correct");
                this.Hide();

                Form2 f2 = new Form2();
                f2.ShowDialog();

                if (count == 1)
                {
                }
                else if (count > 1)
                {

                    MessageBox.Show("Duplicate Username and passwor.\nAccess denied.");
                }
                else
                {
                    MessageBox.Show("Username and password is incorrect.\nPleas try again.");
                }
                MyConn.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}
Автор: bob marley Источник Размещён: 08.11.2019 11:26

Ответы (1)


1 плюс

Во-первых, вы ДЕЙСТВИТЕЛЬНО должны использовать параметры вместо создания вашей команды с переменными, как вы это сделали.

Во-вторых, вы не должны ставить здесь своего пользователя и переходить на root.

В-третьих, вы ВСЕГДА покажете сообщение «Имя пользователя и пароль верны», поскольку ничто не мешает этому произойти.

На самом деле ваш код выглядит так:

while (MyReader.Read())
{
    Console.WriteLine(MyReader[count]);
    count++;
}

//This block of code will ALWAYS be executed,
//no matter the value of count.
MessageBox.Show("Username and password is correct");
this.Hide();
Form2 f2 = new Form2();
f2.ShowDialog();

//This IF block is doing nothing.
if (count == 1)
{
}

Как видите, код, который должен выполняться ТОЛЬКО в случае, если значение счетчика равно 1, выполняется независимо от того, что.

Вам необходимо указать ту часть кода, которая должна выполняться, только если count равен 1 INSIDE IF, который проверяет, равен ли count 1:

if (count == 1)
{
  MessageBox.Show("Username and password is correct");
  this.Hide();
  Form2 f2 = new Form2();
  f2.ShowDialog();
}
Автор: Jauch Размещён: 20.08.2016 03:01
Вопросы из категории :
32x32