такой вот вопрос, можно ли использовать два ResultSet
в одном сервлете или нет? При использовании второго ResultSet
выдает ошибку: org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next
Сервлет:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
List<Pkvzdcsql> pkvzdcsqlS = new ArrayList<Pkvzdcsql>();
List<Pkvzdcsql> pkvzdcsqlDvmS = new ArrayList<Pkvzdcsql>();
try {
String osdch = request.getParameter("osdch").replace("*", "%").toUpperCase();
String osdi = request.getParameter("osdi").replace("*", "%").toUpperCase();
String nceh = request.getParameter("nceh").replace("*", "%").toUpperCase();
int page = Integer.parseInt(request.getParameter("page"));
int count = Integer.parseInt(request.getParameter("count"));
while ((nceh.length() < 3) && (nceh.length() != 0)) {
nceh = " " + nceh;
}
Integer pages;
try {
pages = Integer.parseInt(request.getParameter("pages"));
} catch (NumberFormatException e) {
pages = 25;
}
PreparedStatement preparedStatement = connection.prepareStatement(
"with pkvzdc as (\n"
+ " select \n"
+ " nceh,osdch_t,osdch_r,osdch_c,(osdch_c||osdch_r) as osdch,\n"
+ " osdk_t,osdk_r,osdk_c,(osdk_c||osdk_r) as osdk,\n"
+ " osdi_t,osdi_r,osdi_c,(osdi_c||osdi_r) as osdi,\n"
+ " kol,koli,kolzd,dvm\n"
+ " from clippersql.pkvzdcsql\n"
+ " where (osdch_c||osdch_r = '" + osdch + "' or '" + osdch + "' = '')\n"
+ " and (osdi_c||osdi_r = '" + osdi + "' or '" + osdi + "' = '')\n"
+ " and (nceh = '" + nceh + "' or '" + nceh + "' = '')\n"
+ " order by nceh, osdch_t, osdch_r, osdch_c, osdk_t, osdk_r, osdk_c, osdi_t, osdi_r, osdi_c \n"
+ " limit " + pages + " offset " + count + "),\n");
ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) {
Pkvzdcsql pkvzdcsql = new Pkvzdcsql();
pkvzdcsql.setOsdch(rs.getString("osdch"));
pkvzdcsql.setOsdi(rs.getString("osdi"));
pkvzdcsql.setOsdk(rs.getString("osdk"));
pkvzdcsql.setDvm(rs.getDate("dvm"));
pkvzdcsql.setNaim_ch(rs.getString("naim_ch"));
pkvzdcsql.setNaim_k(rs.getString("naim_k"));
pkvzdcsql.setNaim_i(rs.getString("naim_i"));
pkvzdcsql.setKol(rs.getString("kol").replaceAll("\\.(.*?)0+$", ".$1").replaceAll("\\.$", ""));
pkvzdcsql.setKoli(rs.getString("koli").replaceAll("\\.(.*?)0+$", ".$1").replaceAll("\\.$", ""));
pkvzdcsql.setKolzd(rs.getString("kolzd").replaceAll("\\.(.*?)0+$", ".$1").replaceAll("\\.$", ""));
pkvzdcsql.setOsdch_count(rs.getString("osdch_count"));
pkvzdcsql.setOsdk_count(rs.getString("osdk_count"));
pkvzdcsql.setNceh(rs.getString("nceh"));
pkvzdcsqlS.add(pkvzdcsql);
}
Statement statement = connection.createStatement();
String query2 = "select dvm \n"
+ "from clippersql.pkvzdcsql\n"
+ "limit 1";
ResultSet rs2 = statement.executeQuery(query2);
while (rs2.next()) {
Pkvzdcsql oneDvm = new Pkvzdcsql();
oneDvm.setDvm(rs.getDate("dvm"));
pkvzdcsqlDvmS.add(oneDvm);
}
RequestDispatcher view = request.getRequestDispatcher("/searchViewPkvzds.jsp");
int size = pkvzdcsqlS.size();
request.setAttribute("page", page);
request.setAttribute("osdch", osdch.replace("%", "*"));
request.setAttribute("nceh", nceh.replace("%", "*"));
request.setAttribute("osdi", osdi.replace("%", "*"));
request.setAttribute("size", size);
request.setAttribute("pages", pages);
request.setAttribute("count", count);
int counts = 1000;
request.setAttribute("counts", counts);
request.setAttribute("pkvzdcsqlS", pkvzdcsqlS);
request.setAttribute("pkvzdcsqlDvmS", pkvzdcsqlDvmS);
view.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
Вот здесь у Вас скорее всего ошибка:
while (rs2.next()) {
Pkvzdcsql oneDvm = new Pkvzdcsql();
oneDvm.setDvm(rs.getDate("dvm"));
pkvzdcsqlDvmS.add(oneDvm);
}
посмотрите какой ResultSet вы дергаете.
Именно по-этому нужно давать обдуманные названия переменным.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу приложение, логика которого требует подключаться к серверу для обновления раз в годНо дата в системе пользователя может быть установлена...
Я создаю мини игру в Android StudioПри клике View меняет цвет
Недавно начал учить Java и в качестве практической задачи нужно написать приложение, которое должна сравнивать 3 возраста и выдавать результат,...