Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как с этим бороться ? / 15 сообщений из 15, страница 1 из 1
16.08.2006, 16:34
    #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
16.08.2006, 16:48
    #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
16.08.2006, 16:51
    #33922616
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как с этим бороться ?
Чего-то вы не догавариваете. userRole ГДЕ и КАК определено?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
16.08.2006, 16:56
    #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
16.08.2006, 16:59
    #33922661
Michael Ponomarev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как с этим бороться ?
Приложение веб?

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

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

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

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

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
18.08.2006, 11:25
    #33927226
leonardo23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как с этим бороться ?
Нет userRole - берется из БД
...
Рейтинг: 0 / 0
18.08.2006, 11:56
    #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
Форумы / Java [игнор отключен] [закрыт для гостей] / Как с этим бороться ? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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