Перейти к содержимому


Подскажите с выводом тектса

KFan

Сообщений в теме: 2

#1 KFan

    Новичок

  • Пользователи
  • Pip
  • 24 сообщений
  • ГородЕкатеринбург

Отправлено 06 Декабрь 2012 - 18:12

Имеется код
public String getVseAdmMsg(){
String s="40 последних сообщений от наблюдателей:\n[№] [ID] [Ник] [Сообщение] [дд-мм-гг] [чч:мм:сс]\n";
try{
PreparedStatement pst = db.get("admmsg").getDb().prepareStatement("select id, id_2, msg, time from admmsg");
ResultSet rs = pst.executeQuery();
[color=#ff0000]for(int i=1;i<10;i=i+1){[/color]
if(rs.next()){
Users us = getUser(rs.getInt(2));

s += i +  ". - " + (us.localnick.equals(" ") ? "Еще не зареган" : (" " + us.id + " " + us.localnick)) +    " - " + rs.getString(3) + "\n" + "Сообщение отправлено: " + rs.getTimestamp(4) + "\n\n";
}
}
rs.close();
pst.close();
} catch (Exception ex){
ex.printStackTrace();
}
return s;
}

когда я пишу в чате например команду !1
мне выводит 10 сообщений от пользователей хотя в базе имеется к примеру 20 сообщений

[color=#ff0000]for(int i=1;i<10;i=i+1){[/color]
с этой строчкой я разобрался - это строчка задает количество сообщений входящие от чата-----все нормально так и должно быть!!!!

теперь!!!!!!
в базе имеется текста
1) тут там вон там
2) тут там вон там
3) тут там вон там
4) тут там вон там
5) тут там вон там
6) тут там вон там
7) тут там вон там
8) тут там вон там
9) тут там вон там
10) тут там вон там

теперь я добавляю в базу ешё одно сообщение например какой нить смайлик
11) :-|

и теперь очень без пантовая ситуация пишу в чат команду для просмотра сообщений и мне вот что выдает

1) тут там вон там
2) тут там вон там
3) тут там вон там
4) тут там вон там
5) тут там вон там
6) тут там вон там
7) тут там вон там
8) тут там вон там
9) тут там вон там
10) тут там вон там

а должно выводится вот так!!!

2) тут там вон там
3) тут там вон там
4) тут там вон там
5) тут там вон там
6) тут там вон там
7) тут там вон там
8) тут там вон там
9) тут там вон там
10) тут там вон там
11) :-|

прошу помощи помогите пожалуйста

#2 ~ёМАё~

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 817 сообщений
  • ГородТамбовская обл.

Отправлено 06 Декабрь 2012 - 22:13

Просмотр сообщенияKFan (06 Декабрь 2012 - 18:12) писал:

Имеется код
public String getVseAdmMsg(){
String s="40 последних сообщений от наблюдателей:\n[№] [ID] [Ник] [Сообщение] [дд-мм-гг] [чч:мм:сс]\n";
try{
PreparedStatement pst = db.get("admmsg").getDb().prepareStatement("select id, id_2, msg, time from admmsg");
ResultSet rs = pst.executeQuery();
[color=#ff0000]for(int i=1;i<10;i=i+1){[/color]
if(rs.next()){
Users us = getUser(rs.getInt(2));

s += i +  ". - " + (us.localnick.equals(" ") ? "Еще не зареган" : (" " + us.id + " " + us.localnick)) +	" - " + rs.getString(3) + "\n" + "Сообщение отправлено: " + rs.getTimestamp(4) + "\n\n";
}
}
rs.close();
pst.close();
} catch (Exception ex){
ex.printStackTrace();
}
return s;
}
......
во-первых этот sql запрос выводит не последние сообщения, а все полностью, а уже потом циклом ограничивается их кол-во начиная с первого что уже некорректно
во-вторых судя по коду, цикл будет повторяться не 10 раз а 9 т.к. i<10 следовательно и строчек в итоге 9 а не 10
в третьих этот код можно сделать проще, в sql запросе сортировать по дате и ставить лимит на 10,20, или сколько там нужно и потом выводить результат

#3 REDOSS

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 800 сообщений
  • ГородКраснодар

Отправлено 07 Декабрь 2012 - 03:40

Дам совет, попробуйте сами разобраться с кодом на детали. выяснить, что где выполняется.
У вас появится понимание, а в дальнейшем, сможете сами написать что-то полезное.
Так же прочитайте про SQL. Вам уже вроде бы это советовал Кот.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей