Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
1

Проверка существующего пользователя при регистрации

27.03.2017, 15:17. Показов 2364. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени. Пилю форму регистрации в БД а для этого проверяю по имени,фамилии и отчеству - есть ли пользователи с такими данными в базе. Но не смотря на то что таких юзеров уже >10 прога продолжает добавлять одни и те же данные. Вот код :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  internal string createNewCustomer(string FN, string N, string ON, string Phone, string Mail)
        {
            string result;
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand select = new SqlCommand("select [customer_Name], [customer_FName], [customer_OName] from customers where [customer_Name] = @Name and [customer_FName] = @FName and [customer_OName] = @OName", conn);
                select.Parameters.AddWithValue("Name", N);
                select.Parameters.AddWithValue("FName", FN);
                select.Parameters.AddWithValue("OName", ON);
                conn.Open();
 
                using (SqlDataReader read = select.ExecuteReader())
                {
                    
                    if (read.HasRows)
                    {
                        result = "Человек с введенными данными уже есть в базе";
                    }
                    result = "Такого человека еще нет";
                }
            }
Наверняка какую то мелочь упустил. Помогите найти, спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2017, 15:17
Ответы с готовыми решениями:

Проверка пользователя при регистрации
Есть такая функция function auth_user($name,$pass) { $file_array = file('member.php'); ...

Проверка возраста при регистрации пользователя
Сделайте с помощью конструкции if-else или if-else-if проверку возраста при регистрации...

Ошибка в БД при регистрации пользователя
всем привет, таблицу создал так: $name = "users"; $query = "CREATE TABLE IF NOT EXISTS...

Ошибка при регистрации пользователя
Регистрация работала, добавила активацию по емейл, теперь при нажатии "зарегистрироваться" выдает...

12
471 / 234 / 73
Регистрация: 25.05.2012
Сообщений: 1,054
Записей в блоге: 1
27.03.2017, 16:17 2
EvgenNews, строка 19 будет выполняться всегда
1
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
27.03.2017, 16:23  [ТС] 3
Почему? ведь
C#
1
 if (read.HasRows)
проверяет есть ли строки с значениями ФИО. а если строк нет то не должен выполняться. Или я что то не правильно понял?
0
1643 / 1144 / 171
Регистрация: 23.07.2010
Сообщений: 6,794
27.03.2017, 16:25 4
открой для себя синтаксис if
0
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
27.03.2017, 16:45  [ТС] 5
код
C#
1
read.HasRows
- если есть строки принимает значение true и делает то что в { } иначе не делает. При чем тут синтаксис if ?

Добавлено через 7 минут
при отладке : read свойство HasRows = false.
0
471 / 234 / 73
Регистрация: 25.05.2012
Сообщений: 1,054
Записей в блоге: 1
27.03.2017, 16:49 6
Цитата Сообщение от EvgenNews Посмотреть сообщение
При чем тут синтаксис if ?
есть ведь еще оператор else
0
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
27.03.2017, 16:56  [ТС] 7
И? программа всегда дойдет до else если
C#
1
reader.HasRows = false.
Добавлено через 2 минуты
Что измениться если я так напишу ?
C#
1
2
3
4
5
6
7
8
9
if (read.HasRows)
 
                    {
                        result = "Человек с введенными данными уже есть в базе";
                    }
                    else
                    {
                        result = "Такого человека еще нет";
                    }
0
471 / 234 / 73
Регистрация: 25.05.2012
Сообщений: 1,054
Записей в блоге: 1
27.03.2017, 17:03 8
Цитата Сообщение от EvgenNews Посмотреть сообщение
при отладке : read свойство HasRows = false.
тем более, тогда и 17 строка не выполняется. Хотя это неважно, т.к. 19 строка выполняется безусловно.

Добавлено через 56 секунд
Цитата Сообщение от EvgenNews Посмотреть сообщение
И? программа всегда дойдет до else если
где у вас else в исходной версии?
1
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
27.03.2017, 17:06  [ТС] 9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand select = new SqlCommand( @"select * from customers where 
                                                [customer_Name] = @Name and [customer_FName] = @FName and [customer_OName] = @OName", conn);
 
                select.Parameters.AddWithValue("Name", N);
                select.Parameters.AddWithValue("FName", FN);
                select.Parameters.AddWithValue("OName", ON);
                conn.Open();
 
                using (SqlDataReader read = select.ExecuteReader())
                {
 
                    if (read.HasRows)
                    {
                        result = "Человек с введенными данными уже есть в базе";
                    }
                    else
                    {
                        result = "Такого человека еще нет";
                    }
                }
            }
Для наглядности

Добавлено через 52 секунды
Цитата Сообщение от NewOrdered Посмотреть сообщение
тогда и 17 строка не выполняется
в том и проблема
0
471 / 234 / 73
Регистрация: 25.05.2012
Сообщений: 1,054
Записей в блоге: 1
27.03.2017, 18:31 10
Цитата Сообщение от EvgenNews Посмотреть сообщение
в том и проблема
Убедитесь, что
а) запись, которую вы ищете, существует
б) запрос, который вы выполняете, возвращает хотя бы одну строку. Это можно сделать извне вашей программы, например, в Management Studio
1
5 / 5 / 1
Регистрация: 08.03.2017
Сообщений: 229
27.03.2017, 18:36  [ТС] 11
SQL
1
2
3
SELECT * FROM customers WHERE
  [customer_Name] = 'Петров' AND [customer_FName] = 'Петр' AND [customer_OName] = 'Олегович'
  GO
такой запрос у меня в managment studio выдает 1 строку а в коде всегда 0. И при чем тут может быть синтаксис if ?

Добавлено через 1 минуту
C#
1
2
3
4
 
select.Parameters.AddWithValue(@"Name", N);
select.Parameters.AddWithValue(@"FName", FN);
select.Parameters.AddWithValue(@"OName", ON);
Здесь N, FN, ON и есть петр,петров,олегович
0
471 / 234 / 73
Регистрация: 25.05.2012
Сообщений: 1,054
Записей в блоге: 1
27.03.2017, 18:54 12
EvgenNews, посмотрите пример использования SqlDataReader
https://msdn.microsoft.com/ru-... .110).aspx
Мне кажется, вы забыли вызвать метод .Read()
0
784 / 615 / 273
Регистрация: 04.08.2015
Сообщений: 1,707
27.03.2017, 22:50 13
EvgenNews, самое простое объяснение - порядок фамилии, имени и отчества перепутан. Убедитесь, что в запросе нет чего-то типа [customer_Name] = 'Петр'.
0
27.03.2017, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.03.2017, 22:50
Помогаю со студенческими работами здесь

Ошибка при регистрации пользователя
Всем привет! Достался в наследство сайт на vuejs, сам в этой технологии не силён. Случилась...

Вывод сообщении при регистрации пользователя
Доброго времени суток! Подскажите как сделать следующий функционал. Имеется фаил user_reg_tpl.php...

Автоматическое создание сабдомена при регистрации пользователя
Нужна помощь - возможно разумное вознаграждение. Зарегистрировавшийся пользователь может создать...

Добавление орг.единицы при регистрации пользователя
Всем привет! а как сделать чтобы при регистрации нового пользователя его лотусимя формировалось...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru