Untitled

mail@pastecode.io avatar
unknown
plain_text
2 months ago
4.9 kB
0
Indexable
Never
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;

namespace lombard1
{
    public partial class Register : Form
    {
        public Register()
        {
            InitializeComponent();
        }
        string connectionString = "server=localhost; user=root; password=123456; database=new_schema";
        bool coincidences;

        private void buttonReg_Click(object sender, EventArgs e)
        {
            coincidences = false;

            if (textBoxPassword1.Text == textBoxPassword2.Text)
            {
                checkLogin();

                if (!coincidences)
                {
                    MySqlConnection conn = new MySqlConnection(connectionString);
                    conn.Open();
                    MySqlTransaction transaction = conn.BeginTransaction();

                    try
                    {

                        // 1. Вставка данных в таблицу sp_role
                        string cmdStringRole = "INSERT INTO `new_schema`.`sp_role` (`id_role`, `name_role`) " +
                                               "VALUES (@idRole, @nameRole)";
                        MySqlCommand commandRole = new MySqlCommand(cmdStringRole, conn, transaction);
                        commandRole.Parameters.AddWithValue("@idRole", null); // Значение будет автоматически сгенерировано базой данных
                        commandRole.Parameters.AddWithValue("@nameRole", "Пользователь");
                        commandRole.ExecuteNonQuery();

                        // Получаем id, который был автоматически сгенерирован
                        long idRole = commandRole.LastInsertedId;

                        // 2. Вставка данных в таблицу account
                        string cmdStringAccount = "INSERT INTO `account` (`id_role`, `login`, `password`) " +
                                                 $"VALUES (@idRole, @login, @password)";
                        MySqlCommand commandAccount = new MySqlCommand(cmdStringAccount, conn, transaction);
                        commandAccount.Parameters.AddWithValue("@idRole", idRole); // Используем сгенерированный idRole
                        commandAccount.Parameters.AddWithValue("@login", textBoxLogin.Text);
                        commandAccount.Parameters.AddWithValue("@password", textBoxPassword1.Text);
                        commandAccount.ExecuteNonQuery();


                        // Если дошли до этого момента, фиксируем транзакцию
                        transaction.Commit();

                        DialogResult = DialogResult.OK;
                    }
                    catch (Exception ex)
                    {
                        // В случае ошибки отменяем транзакцию
                        transaction.Rollback();

                        labelWrongData.Text = "Ошибка при выполнении транзакции: " + ex.Message;
                        labelWrongData.Visible = true;
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
                else
                {
                    labelWrongData.Text = "Этот логин уже существует";
                    labelWrongData.Visible = true;
                }
            }
            else
            {
                labelWrongData.Text = "Пароли не совпадают";
                labelWrongData.Visible = true;
            }
        }
        void checkLogin()
        {
            MySqlConnection conn = new MySqlConnection(connectionString);
            conn.Open();
            string cmdString = "SELECT `login` FROM `account`";
            MySqlCommand command = new MySqlCommand(cmdString, conn);
            MySqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                if (textBoxLogin.Text == reader["login"].ToString())
                {
                    coincidences = true;
                }
            }
            conn.Close();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void checkBoxPassword_CheckedChanged(object sender, EventArgs e)
        {

        }
    }
}
Leave a Comment