Resultset консультации в java

Привет у меня есть проект, в котором в классе java, я реализую консультацию в bd oracle, этот я сделал это типом ResultSet, для того, чтобы мой servlet, который функционирует как драйвер, мог отличать результат и видеть, куда он это пересылает, консультация только приносит информацию 0 или 1, проблема состоит в том, что не, как проверка результата консультации, идея состоит в том, чтобы перемещать ее в переменную и сравнивать с if переменную, которая перемещает результат (n), выходит у меня в красном говоря как ошибка CANNOT FIND SYMBOL, я присоединяю код.

 ResultSet rs =consult.getConsultCambioBtnCollectRv(Parametro);
           try {
              if(rs != null){
               while(rs.next()){
                int  n = Integer.parseInt(rs.getString("collection_required_bool"));
                if(n == 0){
                      response.sendRedirect("test.jsp");
                      processRequest(request, response);
                  }else{
                       response.sendRedirect("test1.jsp");
                      processRequest(request, response);
                  }
                }
              }
             } catch (SQLException ex) {
              Logger.getLogger(SvrModificaCollectRv.class.getName()).log(Level.SEVERE, null, ex);
          }
0
задан 24.05.2016, 22:47
3 ответа

Первое, что я вижу, состоит в том, что твой код не имеет много чувства. Как кажется, решение SQL, которое ты выполняешь только, было бы должно приносить результат, но ты применяешь один while чтобы это читать. Если это не случай, тогда ты был бы должен использовать один if:

if (rs.next()) {
    //...
}

Ты не был бы должен parsear цепь, которую ты получаешь с базы данных, он оставляет это задание в драйвер:

//int  n = Integer.parseInt(rs.getString("collection_required_bool"));
int n = rs.getInt("collection_required_bool");

Я вижу, что ты выполняешь метод processRequest(request, response) после redirect показывает. Как только ты звонишь в метод redirect, ты не был бы должен призывать ни в какой добавочный метод писать добавочную информацию в ответ (HttpServletResponse response) так как ответ будет redirect.

response.sendRedirect("test.jsp");
//processRequest(request, response);

Ты не закрываешь ResultSet apropiadamente. Лучшее состояло бы в том, чтобы ты использовал try с ресурсами, или если ты используешь Java 6 или предыдущий так как, что ты закрыл объект вручную.

Под этими рекомендациями, конечный код был бы, как останься:

try (ResultSet rs = consult.getConsultCambioBtnCollectRv(Parametro)) {
    if (rs != null && rs.next()) {
        int  n = rs.getInt("collection_required_bool"));
        if (n == 0) {
            response.sendRedirect("test.jsp");
        } else {
            response.sendRedirect("test1.jsp");
        }
    }
} catch (SQLException ex) {
    Logger.getLogger(SvrModificaCollectRv.class.getName()).log(Level.SEVERE, null, ex);
}

Однако, мы видим, что есть проблема, когда они не получаются оказанные ResultSet, не показывается, какой дебет делаться. Лучшее состояло бы в том, чтобы применять маленькое переоснование фактории и считать изменчивой страницу, в которую он должен бы быть пересланным по умолчанию. Здесь пример:

String paginaRedirect = "test1.jsp";
try (ResultSet rs = consult.getConsultCambioBtnCollectRv(Parametro)) {
    if (rs != null && rs.next()) {
        int  n = rs.getInt("collection_required_bool"));
        if (n == 0) {
            paginaRedirect = "test.jsp";
        }
    }
} catch (SQLException ex) {
    Logger.getLogger(SvrModificaCollectRv.class.getName()).log(Level.SEVERE, null, ex);
}
//de esta manera siempre se hará un redirect
response.sendRedirect(paginaRedirect);
1
ответ дан 24.11.2019, 14:18

n он не будет видимым ни в какой другой области, которая не будет внутри while так как именно там ты объявляешь ее, для того, чтобы ты смог видеть это в области if ты должен заявлять n (например) вместе с ResultSet.

Изначально твоя переменная rs он инициализируется стоимостью null а следовательно я беру на себя ответственность, чем в твоем методе consult.getConsultCambioBtnCollectRv(Parametro) он находится немного как следующее

public ResultSet getConsultCambioBtnCollectRv(...) {
    Statement statement = connection.getConnection().createStatement();
    resultSet = statement.executeQuery(sqlString);
    return resultSet;
}

Так что подходящее было бы, санкционировать, что у resultSet не было стоимости null так мы знаем, что у него действительно есть что-то, что мы можем пробовать согласиться.

int n = -1; //valor inicial que desees 

try {
    ResultSet rs = null;
    rs = consult.getConsultCambioBtnCollectRv(Parametro);

    if(rs != null) {
        while(rs.next()){
            n = rs.getInt(1); //obtengo n (siempre y cuando la posicion (1) sea un entero desde la BDD
        }

        if(n == 0) { 
        // my logica aqui 
        }

    } else {
        //Imprimir mensaje, no se pudo obtener datos 
    }
} catch (SQLException ex) {
    Logger.getLogger(SvrModificaCollectRv.class.getName()).log(Level.SEVERE, null, ex);
}

Также я рекомендую тебе продолжать работать внутри try/catch если что-то идет плохо, приложение не остановило Ваше выполнение внезапного способа.

0
ответ дан 24.11.2019, 14:18
  • 1
    Привет Rosendo, также объявляя переменную, эта показывает мне ошибку в момент делания if, не, которого другой способ мочь оценивать n = rs.getInt (1); чтобы знать, того, что он приносит, 1 или 0 ли – elsa 24.05.2016, 20:33
  • 2
    @elsa он показывает тебе ту же ошибку? Я сомневаюсь, что он это, porfa обнови твой вопрос с реализованными изменениями и ошибкой, я предполагаю, что один count того, что ты делаешь не? – Rosendo Ropher 24.05.2016, 22:08
  • 3
    #191; не быть и # 237; когда лучше этот двигает if внутри цикла while? Вне цикла while он не имеет много чувства, если только не используют if (rs.next()). –  24.05.2016, 22:22
  • 4
    Я не знаю, если консультация приносит один или м и # 225; s результаты, и если, некоторые принесли n, он должен быть оцененным для всех. – Rosendo Ropher 24.05.2016, 22:30
  • 5
    @LuiggiMendoza я обновил код, хотя он сейчас не показывает мне ошибку, этот ничего не реализует, из-за браузера я обращаю внимание, что он остается в servlet и не уходит нигде. – elsa 24.05.2016, 22:49

Ты мог бы делать что-то asГ-:

int  n = 0;
ResultSet rs =consult.getConsultCambioBtnCollectRv(Parametro);
while (rs.next()){
      n = Integer.parseInt(rs.getString("collection_required_bool"));
    }

if(n == 0){
      response.sendRedirect("test.jsp");
      processRequest(request, response);
}else{
      response.sendRedirect("test1.jsp");
      processRequest(request, response);
}
0
ответ дан 24.11.2019, 14:18