1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 43

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

10.12.2018, 00:20. Показов 2320. Ответов 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
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 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
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 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
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 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
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 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
18308 / 14232 / 5368
Регистрация: 17.03.2014
Сообщений: 28,904
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru