powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как с этим бороться ?
15 сообщений из 15, страница 1 из 1
Как с этим бороться ?
    #33922500
leonardo23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу приложение в котором юзерам надо логинтся (в БД табличка, где указаны username password role ). В зависимости от значения role юзера кидает на разные странички. Только вот проблема в методе извлечения role

Код: plaintext
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.
 
  public  String GetUserRole(String userName, String password){
 try {
     Class .forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/base1?user=root&password=");
    Statement s = con.createStatement();
     String sql = "SELECT * FROM Users" +
        " WHERE UserName='" + userName + "'" +
        " AND Password='" + password + "'";

     ResultSet rs = s.executeQuery(sql);

          if  (rs.next()){
         // столбик role в таблице шестой
         userRole = rs.getString( 6 );
         }
           rs.close();
           con.close();
           s.close();

           } catch  (ClassNotFoundException e){
               System.out.println(e.toString());
           } catch  (SQLException e){
               System.out.println(e.toString());
           }

             return  userRole;
       }

Казалось бы все должно хорошо работать, но! Не работает. При вводе не существующего пользователя и пароля береться последня строка таблицы, у меня например последняя строка user="5" password "5" role="superuser", а вот я ввожу в сервлет (таких user и password у меня в таблице нет) user="6" password "6" и мне возвращает role="superuser", потом ввожу в сервлет (и таких тоже user и password у меня в таблице нет) user="wer" password "we" и мне опять возвращает role="superuser",
Как с этим бороться?
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922593
max_from_sumy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, как вы пишите нехорошо писать, лучше так:
Код: plaintext
1.
2.
3.
4.
5.
6.
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/base1?user=root&password=");
     String sql = "SELECT * FROM Users WHERE UserName=? AND Password=?";
    PreparedStatement s = con.prepareStatement(sql);
    s.setString( 1 , username);
    s.setString( 2 , password);
 ResultSet rs = s.executeQuery(sql);

Но это вряд ли поможет а как таблица устроена?
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922616
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то вы не догавариваете. userRole ГДЕ и КАК определено?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922645
leonardo23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Устроена просто 6 полей и пять строк заполенено просто для тестирования:
ID FirstName LastName UserName Password Role
1 1 1 1 1 root
2 2 2 2 2 user
3 3 3 3 3 root
4 4 4 4 4 user
5 5 5 5 5 adm
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922661
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение веб?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922673
Gold Fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая СУБД????

---------------------
Все о праве интелектуальной собственности на
http://net-law.biz
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922682
ПсоП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы для начала проверил, что там реально подставляется в запрос.
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922688
ПсоП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну те вывести
String sql
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922714
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я протормозил. Приложение веб.
еще раз: покажи ОПРЕДЕЛЕНИЕ userRole

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922738
ПсоП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и эта функция по идее должна возвращать список ролей, а не только первую попавшуюся. Оно обычно так и делается.
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33922740
pasha701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
//-- нужно добавить else --
if (rs.next()){
// столбик role в таблице шестой
userRole = rs.getString(6);
}
else
userRole=null;

//-- Скорей всего берется предідущее значение, "superuser"
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33923753
leonardo23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработало! Всем спасибо , помог совет pasha701!
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33924658
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все-таки есть у меня предположение, что userRole определено в классе
сервлета как поле:
Код: plaintext
1.
 private  String userRole;
я ошибаюсь?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33927226
leonardo23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет userRole - берется из БД
...
Рейтинг: 0 / 0
Как с этим бороться ?
    #33927417
xxx2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
String sql = "SELECT * FROM Users" +
        " WHERE UserName='" + userName + "'" +
        " AND Password='" + password + "'";
+   String userRole =  null ;
     ResultSet rs = s.executeQuery(sql);
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как с этим бороться ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]