Несколько условий и MySQLConnections проблема в C # - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть событие нажатия кнопки, которое проверяет условия в нескольких элементах ввода в форме. Текстовые поля, радио, комбинированные кнопки и т. Д.

Кроме того, метод проверяет, является ли текстовая запись для имени пользователя уникальной или уже существует в базе данных. Если пользователь удовлетворяет всем условиям, то с помощью оператора else активируется и записи сохраняются в базе данных.

Это метод ниже:

    private void button2_Click_2(object sender, EventArgs e)
    {

        int Vid_Smetka;

        if (radioNewAdmin.Checked)
        {
            Vid_Smetka = 1;
        }
        else
        {
            Vid_Smetka = 0;
        }


        if (txtNewUser.Text == String.Empty)
        {
            MessageBox.Show("Корисничкото име е празно. Ве молиме пополнете го полето.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else if (txtNewFullname.Text == String.Empty)
        {
            MessageBox.Show("Ве молиме пополнете го полето за целосно име и презиме.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else if (txtNewEmail.Text == String.Empty || !txtNewEmail.Text.Contains('@'))
        {
            MessageBox.Show("Ве молиме пополнете го полето за email. Користете валидна e-mail адреса.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else if (txtNewPassword.Text.Length < 6)
        {
            MessageBox.Show("Ве молиме внесете најмалку 6 карактери во лозинката.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }
        else if (!txtNewPassword.Text.Any(x => char.IsUpper(x)))
        {
            MessageBox.Show("Ве молиме внесете барем една голема буква во лозинката.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else if (!txtNewPassword.Text.Any(x => char.IsLower(x)))
        {
            MessageBox.Show("Ве молиме внесете барем една мала буква во лозинката.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
        else if (txtNewPassword.Text != txtNewRepeatPassword.Text)
        {
            MessageBox.Show("Лозинките не се совпаѓаат. Ве молиме обидете се повторно.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }
        else if (!radioNewAdmin.Checked && !radioNewUser.Checked)
        {
            MessageBox.Show("Ве молиме селектирајте тип на сметка.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }
        else if (string.IsNullOrEmpty(comboNewFunction.Text))
        {
            MessageBox.Show("Ве молиме функција на корисникот на сметката во училиштето.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        }
        else if (txtNewUser.Text != String.Empty)
        {

            MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["#.Properties.Settings.ConnectionString"].ConnectionString);

            conn.Open(); //Try to open the connection to the MySql database

            //Check if there is a row with credentials entered in the form
            MySqlDataAdapter sda = new MySqlDataAdapter("SELECT Count(*) FROM #.# WHERE Korisnik = '" + txtNewUser.Text + "'", conn);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            //Initiate a new connection string

            if (dt.Rows[0][0].ToString() != "0")
            {
                MessageBox.Show("Корисничкото име е зафатено. Ве молиме обидете внесете уникатно.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            conn.Close();
        }
        else
        {

            var sqlCommand = "INSERT INTO #.#" +
            "(Korisnik, Lozinka, Vid_Smetka, email, user_function, full_name) " +
            "VALUES ('" + this.txtNewUser.Text + "', '" + this.txtNewPassword.Text + "', '" + Vid_Smetka + "', " +
            "'" + this.txtNewEmail.Text + "', '" + this.comboNewFunction.Text + "', '" + this.txtNewFullname.Text + "');";

            //Initiate a new connection string

            try
            {
                using (MySqlConnection con = new MySqlConnection(conString))
                {
                    MySqlCommand cmdDatabase = new MySqlCommand(sqlCommand, con);
                    con.Open();
                    MySqlDataReader myReader;
                    myReader = cmdDatabase.ExecuteReader();
                    dataGridView1.DataSource = loadData().Tables[0];

                    MessageBox.Show("Зачувано.", "Известување", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    panelNew.Visible = false;

                }
            }
            catch (Exception ex)

            {
                MessageBox.Show(ex.Message);
            }


        } 
    }

Это, очевидно, довольно просто. Но по какой-то причине оператор else не выполняется, когда выполняются все остальные условия.

Я делаю ошибку с MySQLConnection? Любые намеки, где я могу ошибаться?

1 Ответ

0 голосов
/ 27 апреля 2018

Если этот раздел работает:

else if (txtNewUser.Text != String.Empty)
    {

        MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["#.Properties.Settings.ConnectionString"].ConnectionString);

        conn.Open(); //Try to open the connection to the MySql database

        //Check if there is a row with credentials entered in the form
        MySqlDataAdapter sda = new MySqlDataAdapter("SELECT Count(*) FROM #.# WHERE Korisnik = '" + txtNewUser.Text + "'", conn);
        DataTable dt = new DataTable();
        sda.Fill(dt);

        //Initiate a new connection string

        if (dt.Rows[0][0].ToString() != "0")
        {
            MessageBox.Show("Корисничкото име е зафатено. Ве молиме обидете внесете уникатно.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        conn.Close();
    }

... тогда он выйдет из общего оператора if, так что это ...

else
    {

        var sqlCommand = "INSERT INTO #.#" +
        "(Korisnik, Lozinka, Vid_Smetka, email, user_function, full_name) " +
        "VALUES ('" + this.txtNewUser.Text + "', '" + this.txtNewPassword.Text + "', '" + Vid_Smetka + "', " +
        "'" + this.txtNewEmail.Text + "', '" + this.comboNewFunction.Text + "', '" + this.txtNewFullname.Text + "');";

        //Initiate a new connection string

        try
        {
            ...
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }


    }

... не будет работать потом. Если вы хотите запустить код INSERT INTO после проверки уникальности имени пользователя, измените последнюю часть кода на:

else if (txtNewUser.Text != String.Empty)
    {

        MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["#.Properties.Settings.ConnectionString"].ConnectionString);

        conn.Open(); //Try to open the connection to the MySql database

        //Check if there is a row with credentials entered in the form
        MySqlDataAdapter sda = new MySqlDataAdapter("SELECT Count(*) FROM #.# WHERE Korisnik = '" + txtNewUser.Text + "'", conn);
        DataTable dt = new DataTable();
        sda.Fill(dt);

        //Initiate a new connection string

        if (dt.Rows[0][0].ToString() != "0")
        {
            MessageBox.Show("Корисничкото име е зафатено. Ве молиме обидете внесете уникатно.", "Потсетник", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        else
        {
            con.Close();

            var sqlCommand = "INSERT INTO #.#" +
                "(Korisnik, Lozinka, Vid_Smetka, email, user_function, full_name) " +
                "VALUES ('" + this.txtNewUser.Text + "', '" + this.txtNewPassword.Text + "', '" + Vid_Smetka + "', " +
                "'" + this.txtNewEmail.Text + "', '" + this.comboNewFunction.Text + "', '" + this.txtNewFullname.Text + "');";

            //Initiate a new connection string

            try
            {
                using (MySqlConnection con = new MySqlConnection(conString))
                {
                    MySqlCommand cmdDatabase = new MySqlCommand(sqlCommand, con);
                    con.Open();
                    MySqlDataReader myReader;
                    myReader = cmdDatabase.ExecuteReader();
                    dataGridView1.DataSource = loadData().Tables[0];

                    MessageBox.Show("Зачувано.", "Известување", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    panelNew.Visible = false;

                    con.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
...