22 / 22 / 1
Регистрация: 25.02.2012
Сообщений: 132
1

Как разграничить права доступа на редактирование записей в БД

07.12.2012, 17:03. Показов 3677. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу программу, и там происходит разделение пользователей по уровню доступа. Вроде делаю всё верно, уже даже несколько способов пробовал, но почему-то выборка определения уровня доступа не работает.

Первый способ:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            int id;
            conn.Open();
            SqlCommand acc = new SqlCommand(String.Format("SELECT * FROM Users WHERE username = '{0}'", activeUser.Text.ToLower()), conn);
            using (SqlDataReader dr = acc.ExecuteReader())
            {
                if (dr.HasRows)
                {
                    dr.Read();
                    id = (int)dr["acces"];
                }
                else return;
            }
            switch (id)
            {
                case(1): accesMode.Text = "Только чтение"; break;
                case(2): accesMode.Text = "Не только чтение"; sectionsGrid.Enabled = true; secAddNewBox.Enabled = true; break;
            }

Второй способ:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            conn.Open();
            int id;
            SqlCommand acc = new SqlCommand(String.Format("SELECT * FROM Users WHERE username = '{0}'", activeUser.Text.ToLower()), conn);
            SqlDataReader dr = check.ExecuteReader();
                while (dr.Read())
                    id = dr.GetInt32(6); 
                dr.Close();
            switch (id)
            {
                case(1): accesMode.Text = "Только чтение"; break;
                case(2): accesMode.Text = "Не только чтение"; sectionsGrid.Enabled = true; secAddNewBox.Enabled = true; break;
            }
Третий: (я то знаю что нам возвращаться должно только одно значение )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            conn.Open();
            string id = String.Empty;
            SqlCommand acc = new SqlCommand(String.Format("SELECT acces FROM Users WHERE username = '{0}'", activeUser.Text.ToLower()), conn);
            try
            {
                id = acc.ExecuteScalar().ToString();
            }
            catch
            {
                if (id == "1")
                    accesMode.Text = "Только чтение";
                else if (id == "2")
                {
                    accesMode.Text = "Не только чтение";
                    sectionsGrid.Enabled = true;
                    secAddNewBox.Enabled = true;
                }
            }


Никак не могу понять почему ни один из способов в итоге не производит выборку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2012, 17:03
Ответы с готовыми решениями:

Можно разграничить права доступа в MS SQL CE? Если нет, то посоветуйте, где можно
Сейчас у меня в приложении хранятся данные в Sqlite бд. Появилась необходимость разграничить права...

Как в access 2007 разграничить права пользователей?
Как в access 2007 разграничить права пользователей? Например, чтобы несколько пользователей имели...

Разграничить права админам
Доброго времени суток, как можно сделать следующее: Разные администраторы в админке сайта должны...

Администрирование БД. Разграничить права пользователям
Народ всем доброго дня! Кто знает как в MS Access обстоят дела с администрированием? Мне нужно...

4
22 / 22 / 1
Регистрация: 25.02.2012
Сообщений: 132
08.12.2012, 21:44  [ТС] 2
Тема переименована наверное потому что я сформулировал неверно. Так то система разграничения сформирована давно и в этом проблем нет, да и задача разграничения не стоит в плане редактирования записей в бд (суть в активации и деактивации компонентов).

При выборке ничего не возвращается. Просматривая всё по логике он должен возвращать число (1,2,3...) потому что пользователь есть, подключение есть, все имена баз и таблиц указаны верно, но в sqldatareader никаких данных не пуступает.
0
22 / 22 / 1
Регистрация: 25.02.2012
Сообщений: 132
11.12.2012, 21:01  [ТС] 3
актуально
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
12.12.2012, 08:16 4
В обратном порядке:
Третий способ:
Вы считываете данные из БД и в том случае, если это считывание вызвало исключение, то вы эти данные обрабатываете. Возможно, вы плохо понимаете, что такое try-catch.
Второй способ:
Вы задаете комманду acc, а ридер вызываете для команды check. По вашему примеру не понятно, что содержится в команде check, но одно можно сказать точно, запрос, уазанный в команде acc у вас в данном куске кода не выполняется.
Первый способ:
Беглым взглядом причину не работ этого кода не увидел, но, наверняка, она тоже есть.
2
22 / 22 / 1
Регистрация: 25.02.2012
Сообщений: 132
14.12.2012, 12:08  [ТС] 5
В 3-ем действительно тупанул
во втором опечатка

Нашёл из-за чего не хотело работать. Он не успевал передавать имя пользователя, поэтому не имея пользователя он получал пустые данные.э


Проблема решена.
0
14.12.2012, 12:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2012, 12:08
Помогаю со студенческими работами здесь

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

Разграничить права пользователей на выполнение операций
доброго времени суток. задача: разграничить права пользователей на выполнение тех или иных...

Надо разграничить права пользователя при работе с приложением.
Подскажите плиз! Надо разграничить права пользователя при работе с приложением. Понятно при входе...

Как получить права на редактирование и сохранение файла?
Ребят с линуксом очень мало знаком, мне надо отредактировать файл, но сделать я этого немогу так...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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