Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 43

Запрет повторной регистрации пользователя

10.12.2018, 00:20. Показов 2293. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Регистрация пользователя в windows form через БД
Не могу сообразить, сделал регистрацию в windows form через базу данных sql server management studio, нужно сделать так, чтобы нельзя было регистрировать те данные, которые уже были зарегистрированы и лежат в базе данных, помогите!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "")
            {
                MessageBox.Show("Пожалуйста, заполните все поля для регистрации!!!");
            }
            else
            { SqlConnection con = new SqlConnection(@"Data Source=sql2016;Initial Catalog=Stolovka;Integrated Security=True;");
                con.Open();
                string str = "insert into Users(Login,Password,Name,Surname,Patronymic,Telefon) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "','" + textBox6.Text + "')";
                SqlCommand cmd = new SqlCommand(str, con);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Пользователь зарегистрирован!!!");
            }
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2018, 00:20
Ответы с готовыми решениями:

Запрет повторной записи документа
Привет всем. Скажите пожалуйста как можно запретить повторную интерактивную запись документа?

Запрет запуска повторной программы
Подскажите как реализовать чтобы нельзя было запустить дважды exe-к. Вычитал что вроде можно через QtSingleApplication но ее надо скачать...

Вывести форму регистрации для регистрации другого пользователя
Здравствуйте, уважаемые форумчане! Простите, вообще не бум-бум в Joomle, но нужно сделать лабу по нему. Мне нужно сделать регистрацию...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
10.12.2018, 14:34
Dron4ikkk, добавляем SELECT которыйй проверит есть ли уже такая строка в БД и если да, то INSERT уже не выполняем. Также не помешет добавить UNIQUE ограничения на нужную колонку (колонки) и обрабатывать нарушения constraint в try/catch.
0
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 43
10.12.2018, 14:38  [ТС]
Запрос перед самим добавлением делается?
Сначала проверяем есть ли такое значение, если нет то логин и пароль допустим успешно добавляются, если есть, то требуем зарегистрировать другой логин или пароль?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
10.12.2018, 14:44
Dron4ikkk, да и да. Только врядли нужно проверять используется ли уже такой же пароль. Достаточно проверять логин и, возможно, имя (Name,Surname,Patronymic).
0
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 43
10.12.2018, 15:17  [ТС]
А не подскажите как правильно запрос написать?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
10.12.2018, 20:38
Лучший ответ Сообщение было отмечено Dron4ikkk как решение

Решение

Dron4ikkk, вот так. Обрати внимание на использование параметров. Именно так нужно работать с данными поступающими извне.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "")
    {
        MessageBox.Show("Пожалуйста, заполните все поля для регистрации!!!");
    }
    else
    {
        using (SqlConnection con = new SqlConnection("Data Source=sql2016;Initial Catalog=Stolovka;Integrated Security=True;"))
        {
            con.Open();
            
            SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Users WHERE Login=@Login", con);
            cmd.Parameters.AddWithValue("@Login", textBox1.Text);
            if (0 != (int)cmd.ExecuteScalar())
            {
                MessageBox.Show("Логин " + textBox1.Text + " уже используется. Выберите другой, пожалуйста");
            }
            else
            {
                string sql = "insert into Users(Login,Password,Name,Surname,Patronymic,Telefon) values (@Login,@Password,@Name,@Surname,@Patronymic,@Telefon)";
                cmd = new SqlCommand(sql, con);
                cmd.Parameters.AddWithValue("@Login", textBox1.Text);
                cmd.Parameters.AddWithValue("@Password", textBox2.Text);
                cmd.Parameters.AddWithValue("@Name", textBox3.Text);
                cmd.Parameters.AddWithValue("@Surname", textBox4.Text);
                cmd.Parameters.AddWithValue("@Patronymic", textBox5.Text);
                cmd.Parameters.AddWithValue("@Telefon", textBox6.Text);
                try
                {
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Пользователь зарегистрирован!!!");
                }
                catch (SqlException ex)
                {
                    // Обрабатываем только 'Violation of UNIQUE KEY constraint'
                    if (ex.Number != 2627) throw;
                    
                    MessageBox.Show("Логин " + textBox1.Text + " уже используется. Выберите другой, пожалуйста");
                }
            }
        }
    }
}
tty/catch добавлен исходя из того что в БД есть UNIQUE constraint для колонки Login. Советую его добавить если ты еще не сделал этого.

P.S. Переименуй пока не поздно свои textBox-ы. Что легче читается textBox1 или textBoxLogin?
1
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 43
10.12.2018, 23:08  [ТС]
Огромное спасибо, всё работает, теперь буду знать как это всё делается!!!
Если честно, textBox1 по привычнее будет, хотя сложного ничего нет в переименовании textBox-а
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
10.12.2018, 23:13
Цитата Сообщение от Dron4ikkk Посмотреть сообщение
Если честно, textBox1 по привычнее будет
Верю, но это плохая привычка. Поймешь когда столкнешься с чужим кодом с именами в таком стиле или просто вернешься к своему старому коду.
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 85
01.04.2022, 19:24
OwenGlendower, можете, пожалуйста , подсказать почему я вставил Ваш код и у меня выбрасывает исключение, а то я не очень понимаю



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
        private void button1_Click(object sender, EventArgs e)
        {
 
            if (textBox1.Text == "" || textBox2.Text == "")
            {
                MessageBox.Show("Пожалуйста, заполните все поля для регистрации!!!");
            }
            else
            {
                using (SqlConnection connection = new SqlConnection("Data Source=HOME-PC\\SQLEXPRESS;Initial Catalog = probnic;Integrated Security = True"))
                {
                    connection.Open();
 
                    SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM register WHERE login_user=@login_user", connection);
                    cmd.Parameters.AddWithValue("@login_user", textBox1.Text);
                    if (0 != (int)cmd.ExecuteScalar())
                    {
                        MessageBox.Show("Логин " + textBox1.Text + " уже используется. Выберите другой, пожалуйста");
                    }
                    else
                    {
                        string sql = "insert into register(login_user,password_user) values (@login_user, @password_user)";
                        cmd = new SqlCommand(sql, connection);
                        cmd.Parameters.AddWithValue("@Login", textBox1.Text);
                        cmd.Parameters.AddWithValue("@Password", textBox2.Text);
 
                        try
                        {
                            cmd.ExecuteNonQuery();
                            MessageBox.Show("Пользователь зарегистрирован!!!");
                        }
                        catch (SqlException ex)
                        {
                            // Обрабатываем только 'Violation of UNIQUE KEY constraint'
                            if (ex.Number != 2627) throw;
 
                            MessageBox.Show("Логин " + textBox1.Text + " уже используется. Выберите другой, пожалуйста");
                        }
                    }
                }
            }
 
 
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
01.04.2022, 19:45
Danil178, у вас в запросе переменные @login_user, @password_user, а параметры называются @Login, @Password. О чем вам исключение и говорит.
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 85
01.04.2022, 19:59
OwenGlendower, спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2022, 19:59
Помогаю со студенческими работами здесь

Запрет регистрации с одного IP
Как сделать в файле registration.php запрет регистрации с 1 ip? И что нужно добавить в базу данных для этого? <?php ...

Запрет регистрации с определенных e-mail адресов
С недавнего времени на моем сайте начали толпами регистрироваться новые пользователи с почтовых адресов @hotmail.com. Подозреваю, что это...

Запрет на редактирование личных данных после регистрации
<TD vAlign=top><FONT color=red>*</FONT></TD><TD> Рефер: <input type="text" name="ref" value="<?...

ASP.NET Запрет ввода ключевых символов в строки регистрации
Доброго время суток, уже замучался подскажите кто-нибудь!! как при помощи Regex.Ismath мне исключить именно ключевые(специальные...

Массив регистрации пользователя
может кто оную прелесть на синтаксис C++ помочь перевести? хотя бы создание и заполнение динамического массива как сделать на подобии... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru