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

Авторизация посредством запросов

22.09.2017, 11:19. Показов 755. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имеется программа windouws form на C#. В которой требуется сделать 2 основных действия: авторизация и перенесение базы в массив. Но так как я с базами не очень дружу я "не совсем" понял как это реализовать. все что у меня пока есть это запрос на выборку
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void enter_Click(object sender, EventArgs e)
        {
            id = login_t.Text;
            pass = pass_t.Text;
            int adminrigth;
            try
            {
                MySqlConnection conn = new MySqlConnection(connStr);
                conn.Open();
                string aut = "SELECT employees.[Idsotrudnika], employees.[password], employees.[name], employees.[post], employees.[adminrigth] FROM employees WHERE(((employees.[Idsotrudnika]) = " + id + ") AND((employees.[password]) = '" + pass + "')); ";
                conn.Clone();
            }
            catch
            { }
        }
Подразумевалось сделать выборку и если есть 1+ совпадений то произвести вход при этом получив значение adminrigth в переменную.
Подскажите пожалуйста как реализовать данные функции.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2017, 11:19
Ответы с готовыми решениями:

Создание БД Access посредством запросов
Подскажите, как создавать БД средствами языка C#. Для создания таблиц отправляются запросы, а как создать саму БД?

Переделка запросов (авторизация)
Как сделать так что-бы ответ от базы данных был такого вида (1. Пользователь с таким mail не найден 2. Не правельный password) Вот исходный...

Windows Service. Мониторинг сервера посредством отправки http запросов с неким интервалом
Привет. Раньше с этим не сталкивался, надеюсь подскажите. Задача - мониторить сервер посредством отправки http запросов с неким...

14
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 13:32  [ТС]
Нашел костыль, но че могу понять в чем ошибка.
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
private void enter_Click(object sender, EventArgs e)
        {
            id = login_t.Text;
            pass = pass_t.Text;
            try
            {
                MySqlConnection conn = new MySqlConnection(connStr);
                string aut = "SELECT sotrudniks.* FROM sotrudniks WHERE sotrudniks.[idСотрудника] = '" + id + "' AND sotrudniks.[Пароль] = '" + pass + "'";
                MySqlCommand autoriz = new MySqlCommand(aut, conn);
                conn.Open();
                autoriz.Connection = conn;
                autoriz.CommandText = aut;
                autoriz.Prepare();
                autoriz.ExecuteNonQuery(); //ругается на эту строку
                string rez = (string)autoriz.ExecuteScalar();
                if (rez == id)
                    MessageBox.Show("YES");
                else
                    MessageBox.Show("NO");
                conn.Clone();
            }
            catch (DivideByZeroException)
            { }
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.09.2017, 14:13
KenjiHoQ,
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
private void enter_Click(object sender, EventArgs e)
{
    using (MySqlConnection conn = new MySqlConnection(connStr))
    {
        MySqlCommand cmd = new MySqlCommand(
            "SELECT sotrudniks.* FROM sotrudniks WHERE sotrudniks.[idСотрудника] = @id AND sotrudniks.[Пароль] = @pass",
            conn
        );
        cmd.Parameters.AddwithValue("@id", login_t.Text);
        cmd.Parameters.AddwithValue("@pass", pass_t.Text);
 
        conn.Open();
        using (MySqlDataReader dataReader = cmd.ExecuteReader())
        {
            if (dataReader.Read())
            {
                MessageBox.Show("YES");
            }
            else
            {
                MessageBox.Show("NO");
            }
        }
    }
}
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 15:45  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
OwenGlendower
А могли бы вы пояснить алгоритм работы данного отрезка
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.09.2017, 15:48
KenjiHoQ, Алгоритм Данного Отрезка:
1) Создать команду с запросом
2) Добавить к команде значения параметров
3) Выполнить запрос
4) Если запрос вернул хотя бы одну строку, то пользователь существует, иначе нет.
1
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 16:43  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
OwenGlendower
Сейчас попробую

Добавлено через 53 минуты
Цитата Сообщение от OwenGlendower Посмотреть сообщение
C#
1
2
cmd.Parameters.AddwithValue("@id", login_t.Text);
cmd.Parameters.AddwithValue("@pass", pass_t.Text);
Для этого нужна какая-нибудь библиотека?
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 16:48  [ТС]
Ошибка
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.09.2017, 16:49
Цитата Сообщение от KenjiHoQ Посмотреть сообщение
Для этого нужна какая-нибудь библиотека?
Нет, но если не работает, то попробуй Add вместо AddWithValue.

Добавлено через 39 секунд
Это ошибка старого кода
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 17:05  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Это ошибка старого кода
я его закоментировал. А подчеркивало из-за маленькой буквы W
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 17:08  [ТС]
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
22.09.2017, 17:09
KenjiHoQ, покажи весь код
0
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
22.09.2017, 19:27  [ТС]
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
 private void enter_Click(object sender, EventArgs e)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    MySqlCommand cmd = new MySqlCommand(
                        "SELECT sotrudniks.* FROM sotrudniks WHERE sotrudniks.[idСотрудника] = @id AND sotrudniks.[Пароль] = @pass",conn);
                    cmd.Parameters.AddWithValue("@id", login_t.Text);
                    cmd.Parameters.AddWithValue("@pass", pass_t.Text);
                    conn.Open();
                    using (MySqlDataReader dataReader = cmd.ExecuteReader())
                    {
                        if (dataReader.Read())
                        {
                            MessageBox.Show("YES");
                        }
                        else
                        {
                            MessageBox.Show("NO");
                        }
                    }
                }
            }
            catch (DivideByZeroException)
            { }
        }
Добавлено через 1 минуту
Try catch для последующей обработки если не сможет подключиться к базе

Добавлено через 2 минуты
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
 
namespace Tvoi_mir
{
    public partial class Autorization : Form
    {
        public int adminrids;
        string id, pass, connStr;
        public Autorization()
        {
            InitializeComponent();
            connStr = "server=127.0.0.1;user id=root;password=gjkjntywt1;persistsecurityinfo=True;database=mydb";
        }
 
        private void annulment_Click(object sender, EventArgs e)
        {
            Application.Exit();
            
        }
 
        private void enter_guest_Click(object sender, EventArgs e)
        {
            adminrids = 0;
            Autorization aut = new Autorization();
            aut.Hide();
            Mainform main = new Mainform();
            main.Show();
        }
 
        private void enter_Click(object sender, EventArgs e)
        {
            try
            {
                using (MySqlConnection conn = new MySqlConnection(connStr))
                {
                    MySqlCommand cmd = new MySqlCommand(
                        "SELECT sotrudniks.* FROM sotrudniks WHERE sotrudniks.[idСотрудника] = @id AND sotrudniks.[Пароль] = @pass",conn);
                    cmd.Parameters.AddWithValue("@id", login_t.Text);
                    cmd.Parameters.AddWithValue("@pass", pass_t.Text);
                    conn.Open();
                    using (MySqlDataReader dataReader = cmd.ExecuteReader())
                    {
                        if (dataReader.Read())
                        {
                            MessageBox.Show("YES");
                        }
                        else
                        {
                            MessageBox.Show("NO");
                        }
                    }
                }
            }
            catch (DivideByZeroException)
            { }
        }
    }
}
Добавлено через 2 часа 14 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
покажи весь код
скинул
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
25.09.2017, 14:40
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Если запрос вернул хотя бы одну строку, то пользователь существует, иначе нет.
OwenGlendower, а почему вы не использовали
T-SQL
1
SELECT COUNT(*)
, сразу ясно, есть строки с такими записями или нет...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
25.09.2017, 16:35
insite2012, предполагал что ТСу может понадобится читать данные о пользователе. Если в этом нет необходимости, то SELECT COUNT(*) + ExecuteScalar() несомненно дадут более простой код.
2
0 / 0 / 1
Регистрация: 06.02.2017
Сообщений: 91
13.10.2017, 18:23  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
предполагал что ТСу может понадобится читать данные о пользователе
Совершенно верно. https://www.cyberforum.ru/ado-... 78115.html Вот здесь я осветил данный вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2017, 18:23
Помогаю со студенческими работами здесь

Поиск в БД посредством SQL-запросов
День добрый. Суть в том, что простые операторы добавления, удаления, редактирования были поняты без труда и я их смогу реализовать, а вот...

Авторизация в Instagram посредством POST
Необходимо авторизоваться в Instagram "юзерскими" методами, т.е. через https://instagram.com/accounts/login/ посредством POST-запроса. У...

Авторизация на ru.grepolis.com посредством Curl
Всем доброго дня! Нужно произвести авторизацию на сайте ru.grepolis.com. Завел тестовый Аккаунт: Логин: Tartang Pass:...

Авторизация посредством POST-запроса
Доброго времени суток дорогие формучане. Назрела проблемка, нужно реализовать авторизацию в программе, то есть пользователь вводит пасс и...

Авторизация на сайте посредством Post запроса
Авторизация на сайте по средствам Post запроса На сайте есть форма входа: <form action="site.com/login.php"...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru