0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
|
|
1 | |
Как найти пользователя в базе?10.03.2018, 14:50. Показов 1866. Ответов 17
Метки нет (Все метки)
Мне нужно создать форму с окном авторизации, и если имя есть в базе - тогда авторизация проходит успешно. Если пользователя нет - тогда пользователь проходит её ещё раз. Форму я создал, но не могу понять как искать пользователя в базе. Допустим, ввожу имя "Vasya Pupkin", и если он есть в базе - тогда авторизация успешна и открывается меню. Может кто подсказать? Может, запрос какой нужен или что?
0
|
10.03.2018, 14:50 | |
Ответы с готовыми решениями:
17
"Ошибка входа пользователя" при подсоединении к базе данных как получить доступ к почтовой базе пользователя Как сделать html-страницу с регистрацией пользователя в базе sqlite? Добавление пользователя к базе данных |
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
10.03.2018, 16:31 | 2 |
Infidel, ну если Вам нужно проверить наличие пользователя в базе - логично предположить, что нужно выполнить запрос на поиск пользователя с указанным именем. Без схемы данных, без уже реализованного кода это похоже на гадание без фотографии, так что от Вас нужно больше информации. Не клещами же всё тянуть, в самом деле.
0
|
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
|
|
10.03.2018, 17:07 [ТС] | 3 |
Да у меня особо пока ничего и нет, я создал форму с полями для ввода логина, пароля, имени пользователя, и...всё. Застрял и не могу понять как искать пользователя в базе.
Но ведь это не сработает, тогда поиск будет только по указанному имени, а остальных искать не будет. Не писать же мне запросы на 100 юзеров? Может быть тут нужна хранимая процедура? Но как её использовать чтобы программа искала юзера, которого я ввел в поле авторизации я не знаю.
0
|
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
|
10.03.2018, 18:06 | 4 |
Infidel, чтобы искать пользователя в базе - количество критериев тут вообще роли не играет - как минимум должна быть в наличии база, в которой нужно производить поиск, чтобы сразу проверять работоспособность приложения. В настоящий момент я могу Вам помочь только тем, что посоветую:
1) создать базу 2) спроектировать схему данных 3) определиться с алгоритмом поиска пользователя 4) выбрать технологию для доступа к БД (чистый ADO.NET или какой-нибудь Entity Framework) 5) написать больше кода, столкнуться с реальной проблемой - например, когда что-то не будет работать так, как Вы ожидаете 6) и вот теперь с чистой совестью писать на форум: "я сделал вот это, это и это, вот код, и чот вот тут нифига не работает, укажите на ошибку плз" Как-то так.
1
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
||||||||||||||||
10.03.2018, 20:23 | 5 | |||||||||||||||
1. Создаешь БД, а в ней таблицу пользователей, например:
3. В модели добавляешь ADO EDM, создаешь соединение со своей БД 4. Выбираешь в модель созданную таблицу пользователей 5. Добавляешь контроллер Home, в нем набираешь (вместо EDMMobTelEntities вводишь имя своей модели из context.cs модели), при этом в коде AppStart.RouteConfig.cs вместо "index" пишешь "Login") :
Далее натягиваешь стили, добавляешь валидацию, окно неверного входа и т.д. Добавлено через 6 минут Поправка и дополнение Поправка Из списка полей в INSERT убрать поле UState (забыл вырезать при копировании из своего кода) Дополнение Вот неплохая книжка, по которой сам учусь https://metanit.com/sharp/mvc/
0
|
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
|
|
10.03.2018, 22:54 [ТС] | 6 |
Спасибо, дружище! Твоя помощь неоценима!
Добавлено через 2 минуты У меня ещё вопрос: а это только с MVC можно сделать? Мне просто желательно без него организовать эту проверку.
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
11.03.2018, 06:08 | 7 |
Infidel, тип приложения не играет роли. База и в Африке будет базой. MVC, видимо, чисто для примера было взято.
Вам нужно определиться с типом СУБД, которую будете испльзовать (у них есть различия в диалекте SQL и прочие различия), определиться со схемой данных (что будет храниться и как оно будет связано), определиться с тем, будете ли вручную работать с СУБД или через ORM. Вам об этом уже писали. Я вам рекомендую (моё видение основанное на предположении, что проект учебный): * СУБД - MSSQL Express (очень проста в установке и настройке, бесплатна, ограничение на базу - 10Гб), рекомендую потому, что проста в использовании (важно для новичков)* Рекомендую работать с базой через ADO.NET , вручную, но с применением Dapper.NET для ухода от рутины. Рекомендую для того, чтобы "набить руку" в понимании SQL-a* Со схемой особо нечего порекомендовать, это вам самому нужно придумать. Идую с пользователями вам уже подкинули: таблица в которой будет храниться логин и хеш пароля (сам пароль хранить ни в коем случае нельзя!) Добавлено через 1 минуту MsGuns, причём тут ASP.NET MVC и нафига нужен EF с ручным формированием запросов, да ещё и конкатенацией (фу!)?
0
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
11.03.2018, 13:09 | 8 |
Это был работающий пример, который пишется за 10 минут. Не шедевр, конечно, но и я не джидай, а только учусь. Упреки опытных шарпистов в "кривости" и "некрасивости" меня не смущают - продолжайте стебаться
Добавлено через 4 минуты Использование SQLQuery (прямого запроса) объясняется просто: метод Find работает только с UID, а Where я не понял как работает (пока), вот и заюзал то, что мне хорошо известно, т.е. сиквель. А Вы бы, уважаемый, вместо кнута попробовали бы прняник - т.е. подсказали как нужно
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
11.03.2018, 13:55 | 9 |
MsGuns, над вами тут никто не стебался. Я вам намекнул, что так вообще не делается. Прямая работа с SQL в EF используется только в крайних случаях. Почитайте online-учебник по EF. Там информации не то, чтобы горы, за пару вечеров осилите.
1
|
Администратор
|
|||||||||||
11.03.2018, 16:31 | 10 | ||||||||||
Хотя бы так:
1
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
||||||
11.03.2018, 22:03 | 11 | |||||
Мне больше так понравилось :
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
12.03.2018, 05:51 | 12 |
Так имеет смысл делать только, если вам сам объект
user1 нужен. Если вам нужно узнать только наличие записи, то вытаскивать весь объект, что бы его на null проверить, расточительно. Для этого есть метод Count .
0
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
12.03.2018, 14:34 | 13 |
Я в курсе. Благодаря Вашей ссылке. Но в данном случае запись короткая и не даст большой нагрузки на Сеть. А вообще, конечно, замечание справедливое.
Кстати, из всей полученной записи мне только id и нужен. Для того и First..
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|||||||||||
12.03.2018, 16:16 | 14 | ||||||||||
Так его отдельно и запрашивайте. EF умеет делать "проекции" - это когда вы только часть данных запрашиваете:
Анонимный класс
Класс DTO
1
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
12.03.2018, 23:40 | 15 |
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
|
13.03.2018, 03:57 | 16 |
MsGuns, Data Transfer Object. Просто класс для передачи данных. Если вам нужно получить из базы только часть того, что входит в состав класса модели контекста (или в ином виде), то можно сделать отдельный класс и использовать описанным выше способом, а не вытаскивать всю запись, чтобы взять только одно свойство.
1
|
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
|
|
13.03.2018, 15:09 | 17 |
Usaga,
Был бы премного обязан, если бы Вы привели конкретный пример с джоинами на нескольким таблицам
0
|
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
|
||||||||||||||||||||||||||
13.03.2018, 18:13 | 18 | |||||||||||||||||||||||||
MsGuns, допустим у нас в контексте есть две модели вида:
Кликните здесь для просмотра всего текста
В какой-то момент нам понадобилось выдернуть из базы только пары "Ник-Улица". Мы можем вытащить весь агрегат и взять из него только нужное: Кликните здесь для просмотра всего текста
Это сработает, но EF вытащит всю запись из таблицы пользователей и соответствующую её запись из таблицы адресов, хотя нам, по факту, нужно из каждой всего по одному полю (свойства в моделях: Nickname и FullAddress). Но мы можем инструктировать EF о том, что конкретно нам надо, какие поля выдернуть, что нам не нужно ВСЁ. Для этого мы введём класс для нашей текущей хотелки (пара свойств: ник и адрес): Кликните здесь для просмотра всего текста
И попросим EF вытащить только два поля из связанных таблиц и запихнуть в наш специальный класс: Кликните здесь для просмотра всего текста
Всё. EF сходит в базу не за всеми полями записей, а только за двумя, что сильно эффективнее таскания всего подряд. Добавлено через 6 минут Такой подход не только позволяет конкретизировать запрашиваемые данные, но так же позволяет производить некие простые преобразования данных при выборке из базы. Кликните здесь для просмотра всего текста
1
|
13.03.2018, 18:13 | |
13.03.2018, 18:13 | |
Помогаю со студенческими работами здесь
18
Создать пользователя в базе данных Проверка наличия пользователя в базе Доступ к базе в зависимости от имени пользователя Авторизиция пользователя, генерация случайных паролей с заменой их в базе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |