Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/37: Рейтинг темы: голосов - 37, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51

Проверка на вход

27.05.2013, 13:05. Показов 6993. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Существует 2 формы, первая с полем для ввода логина и пароля и кнопкой "войти". логин и пароль хранятся в БД ms sql. При правильном вводе логина и пароля и нажатие кнопки "войти" мы переходим на вторую форму, и соответственно, при неправильном вводе вылетает ошибка. Как сделать проверку на вход?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2013, 13:05
Ответы с готовыми решениями:

Проверка пользователя на вход
Приветствую, встал вопрос такой. Как написать в скрипте фоновый процесс, который бы чекал чере каждую минуту, что данный пользователь с...

Проверка на вход почты
Здравствуйте! MailMessage Message = new MailMessage(); Message.To.Add(new MailAddress("_@_._")); ...

Проверка на первый вход на сайт
Здравствуйте! На сайте есть "предзагрузка" (заставка) на главной странице нужно сделать как нибудь чтобы она выскакивала не каждый раз а...

21
3 / 3 / 2
Регистрация: 03.01.2012
Сообщений: 66
27.05.2013, 13:10
Сравниваешь введенные данные с данными в БД если совпадают то переходишь ко второй форме.
0
55 / 55 / 8
Регистрация: 06.02.2013
Сообщений: 317
27.05.2013, 13:12
выбираешь запросом из базы строку с пользователями where login = 'введённый логин'. Если такая строка есть и password = 'введённому паролю' то открываешь вторую форму. Если запрос вернул 0 строк либо пароли не совпадают - пишешь сообщение
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
27.05.2013, 16:05
D@niil, если хотите выполнить проверку пользователя перед появлением окна главной формы вызовите диалог формы-входа в Program.cs перед Application. ...
если диалог завершиться неудачей, то выполните return, иначе программа продолжится и запустит главную форму приложения
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
27.05.2013, 16:49
D@niil, проблема в очередности вывода форм или в сравнении введенных данных с хранящимися в базе?
1
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
28.05.2013, 19:09  [ТС]
проблема в сравнении введенных данных с хранящимися в базе... Либо я не правильно сравниваю, либо БД не соединилась. вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string connStr = @"Data Source=DANIEL-PC\SQLEXPRESS;
                            Initial Catalog=Obshezhitie;
                            Integrated Security=True";
            SqlConnection sqlConn = new SqlConnection(connStr);
            sqlConn.Open();
            SqlCommand sqlCmd = new System.Data.SqlClient.SqlCommand("SELECT * FROM Пользователь", sqlConn);
            SqlDataReader sqlRead = sqlCmd.ExecuteReader();
 
            while (sqlRead.Read())
            {
                if (LogBox.Text == sqlRead[1].ToString() && PassBox.Text == sqlRead[2].ToString())
                {
                    Obsh.Show();//вывод следующей формы
                }
            }
            sqlRead.Close();
0
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
28.05.2013, 21:38
у тебя запрос не тот, что надо. Тебе надо взять введенный логин и пароль, а затем найти в бд строку с id = логин, и password = пароль.
Например:
C#
1
2
3
4
5
string log, pass;
log = txtLog.Text; pass = txtPass.Text;
...
SqlCommand cmd = new SqlCommand("select * from <Название таблицы> where id = log, password = pass", sqlConn);
...
Можно вообще без *, а select count, т.к. у тебя в таблице пары логин-пароль может или вообще не быть или быть одна штука.

После запроса смотришь, какое значение вернулось в ответ. Если * запрашивал, то по кол-ву строк (опять же, ноль или один), если count - то число 0 или 1. А дальше показываешь или не показываешь главное окно или что там надо.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
28.05.2013, 23:01
https://www.cyberforum.ru/csha... ost1452051
0
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
29.05.2013, 01:34  [ТС]
благодарю, понял косяк)
но при таком запросе:
select * from <Название таблицы> where id = log, password = pass
вылетает ошибка "неправильный синтаксис строки ',' "
если подставляю and вместо запятой, то пишет "Недопустимое имя столбца log, pass"
у строки SqlDataReader sqlRead = sqlCmd.ExecuteReader();

при таком запросе:
SELECT COUNT(*) FROM users WHERE user_login LIKE @login AND user_pass LIKE @pass
вылетает ошибка "Необходимо объявить скалярную переменную "@log" "
у строки SqlDataReader sqlRead = sqlCmd.ExecuteReader();
Подскажите пожалуйста, объявить скалярную переменную так- declare @log, если не так, то как?
и как присвоить значения текстовых полей логина и пароля к этим переменным?
0
 Аватар для Midnayt
59 / 59 / 7
Регистрация: 07.12.2009
Сообщений: 324
29.05.2013, 01:54
Цитата Сообщение от D@niil Посмотреть сообщение
благодарю, понял косяк)
но при таком запросе:
select * from <Название таблицы> where id = log, password = pass
вылетает ошибка "неправильный синтаксис строки ',' "
если подставляю and вместо запятой, то пишет "Недопустимое имя столбца log, pass"
у строки SqlDataReader sqlRead = sqlCmd.ExecuteReader();
Рескну предположыть что у тебя password текстовое поле это 1.

Второе место запятой пишем AND

id предположытельно инт

Итого: string sql = "select * from <Название таблицы> where id =" + log + "AND password LIKE '%"pass"%'";
0
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
29.05.2013, 01:58
Касательно аргументов запроса с @ - почитай тут, сейчас нет возможности расписать, а там достаточно сказано, подойдет с минимальными переделками.

Насчет запятой в запросе - у меня память очень плохая, и с запросами редко сталкиваюсь сейчас ) вместо запятой AND: select count(*) from DB where id = login AND password = pass
0
 Аватар для Midnayt
59 / 59 / 7
Регистрация: 07.12.2009
Сообщений: 324
29.05.2013, 02:02
% лишний наверное
0
13 / 13 / 1
Регистрация: 21.05.2013
Сообщений: 61
29.05.2013, 13:54
Цитата Сообщение от D@niil Посмотреть сообщение
благодарю, понял косяк)
но при таком запросе:
select * from <Название таблицы> where id = log, password = pass
вылетает ошибка "неправильный синтаксис строки ',' "
если подставляю and вместо запятой, то пишет "Недопустимое имя столбца log, pass"
у строки SqlDataReader sqlRead = sqlCmd.ExecuteReader();

при таком запросе:
SELECT COUNT(*) FROM users WHERE user_login LIKE @login AND user_pass LIKE @pass
вылетает ошибка "Необходимо объявить скалярную переменную "@log" "
у строки SqlDataReader sqlRead = sqlCmd.ExecuteReader();
Подскажите пожалуйста, объявить скалярную переменную так- declare @log, если не так, то как?
и как присвоить значения текстовых полей логина и пароля к этим переменным?
Видно что с SQL у автора проблемно...
Во первых, зачем LIKE. Должно быть так: WHERE user_login = @login AND user_pass = @pass
Далее, ты передал параметры в коде? Перед тем как вызывать sqlCmd.ExecuteReader();?
К примеру так:
C#
1
2
sqlCmd.Parameters.Add("@login", SqlDbType.Int).Value = логин;
sqlCmd.Parameters.Add("@pass", SqlDbType.VarChar,255).Value = пароль;
А вообще было бы не плохо MSDN хоть 10 мин почитать, там такие элементарные вещи есть.
1
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
29.05.2013, 16:18  [ТС]
а как посмотреть какое значение выходит после запроса? какой метод или поле это хранит?
0
13 / 13 / 1
Регистрация: 21.05.2013
Сообщений: 61
29.05.2013, 17:05
Дак легко. Если есть хоть одна строка в ридере, значит вошел успешно и в строке можно считывать его имя, права и т.д. А если ридер ни чего не вернул - так значит он не нашел такую комбинацию.
Вот на примере того, что у меня есть, думаю сможешь разобраться:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
....................
            using (SqlConnection conn = new SqlConnection(Sql.ConnStr()))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("bigphone.AUTHENTICATION", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@ID", SqlDbType.Int).Value = id;
                cmd.Parameters.Add("@PASS", SqlDbType.VarChar,255).Value = password;
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        CurrentId = id;
                        CurrentName = reader["USERS_NAME"].ToString();
                        CurrentPhone = reader["PhoneExt"].ToString();
                        CurrentGroupId = Convert.ToInt32(reader["GROUP_ID"]);
                        CurrentGroupName = reader["GROUP_NAME"].ToString();
                        HeadGroupId = Convert.ToInt32(reader["HEAD_GROUP_ID"]);
                        HeadUserId = Convert.ToInt32(reader["HEAD_USER_ID"]);
                        return Authentication.True;
                    }
                    else return Authentication.False;
            }
0
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
29.05.2013, 17:57  [ТС]
я проверил, строка есть в ридере. Вот у меня и вопрос как считывать или сравнивать?
начинаю сравнивать
if (Convert.ToInt32(sqlRead.ToString())!=1)
Пишет: "Входная строка имела неверный формат." и "Убедитесь, что ваши аргументы метода имеют верный формат"
0
13 / 13 / 1
Регистрация: 21.05.2013
Сообщений: 61
29.05.2013, 18:36
Цитата Сообщение от D@niil Посмотреть сообщение
я проверил, строка есть в ридере. Вот у меня и вопрос как считывать или сравнивать?
начинаю сравнивать
if (Convert.ToInt32(sqlRead.ToString())!=1)
Пишет: "Входная строка имела неверный формат." и "Убедитесь, что ваши аргументы метода имеют верный формат"
Честно говоря я даже не представляю, что возвращает такая команда: sqlRead.ToString()
Что надо? Просто проверить совпал логин и пароль или еще что?
Я же привел пример...
Вот твой запрос:
T-SQL
1
select * from <Название таблицы> where id = @log and password = @pass
ТЕперь проверяй в коде есть ли хоть одна строка с него:
C#
1
2
if (reader.Read()) {Выполняем вход}
else {Ошибка}
0
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
29.05.2013, 18:46  [ТС]
нужно проверить совпал ли логин и пароль...
и что значит выполнить вход в теле метода?
0
13 / 13 / 1
Регистрация: 21.05.2013
Сообщений: 61
29.05.2013, 18:58
Цитата Сообщение от D@niil Посмотреть сообщение
нужно проверить совпал ли логин и пароль...
и что значит выполнить вход в теле метода?
Ну. Так если есть хоть одна строка, значит совпал Иначе бы он ни чего не выдал в селекте. В чем проблема то?
0
0 / 0 / 0
Регистрация: 26.03.2013
Сообщений: 51
29.05.2013, 19:17  [ТС]
то есть если reader.Read() выполняется, то это значит, что запрос вывел одну или несколько строк удоволетворяющих запросу, и в теле мне нужно вставить метод выводящий другую форму, которую мне надо?
Я просто сделал, как выше написал. Пишу неправильный пароль все равно входит в следующую форму...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2013, 19:17
Помогаю со студенческими работами здесь

Проверка на первый вход на сайт
Здравствуйте! На сайте есть &quot;предзагрузка&quot; (заставка) на главной странице нужно сделать как нибудь чтобы она выскакивала не каждый раз а...

Вход через gmail и проверка адреса
Всем привет) У меня в проекте есть вход через gmail Я достаю из апи даные Как мне реализовать фильтр чтобы проверяли адресс после @ и...

Документ на вход, проверка на выходе на наличие аргумента
Вечер добрый, Господа. В общем у меня только несколько вопросов. Это нормально что у меня каждый метод - static? Насколько это вообще...

Регистрация пользователя в программе. Вход по логину и паролю. Проверка ввода
Вот мои наработки по созданию программы которая предлагает зарегистрировать пользователя (Form2). И вход по зарегистрированным данным...

Как поменять местами микрофонный вход и вход на наушники? программное перенаправление
Как сменить местами микрофонный вход и вход на наушники на передней панели? На семерке все просто: можно ли так же успешно сменить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru