Как проверить, существует ли значение на странице JSP? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть функция, которая проверяет, существует ли конкретная запись в таблице в MYSQL.

Ниже приведен этот код:

public String get_value(long nodeid,String ts) {
    try {
        String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";

        em.createNativeQuery(sql).getSingleResult();
        if (em == null) {
            throw new Exception("could not found URL object.");
        }
      //  return 1;

    } catch (Exception e) {
        e.printStackTrace();



    }
   return null;
}

На моей странице JSP я буду вызывать эту функцию и передавать ей параметры.

String v=fileFacade1.get_value(fileID,date);

  if(v !=null ){ 

// if the records exist in the table, do this

}

Я пытаюсь вызвать функцию, поэтому, если в таблице есть запись, затем введите оператор if и сделайте что-нибудь, но из того, что я отлаживаю, значение v всегда нулевое, но есть запись из singleresult .

Я сделал что-то не так?

EDIT:

Вот как это выглядит сейчас:

public String get_value(long nodeid,String ts) {
    try {
        String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
        if (em == null) {
            throw new Exception("could not found URL object.");
        }
        em.createNativeQuery(sql).getSingleResult();

        return (String)em.createNativeQuery(sql).getSingleResult();

      //  return 1;

    } catch (Exception e) {
        e.printStackTrace();



    }
  return null;
}

Ответы [ 3 ]

1 голос
/ 20 марта 2019

Просто оберните ваш код внутри условия if else, я имею в виду, что выдается исключение, когда em имеет значение NULL, или возвращает одну строку, например, следующий фрагмент кода:

public String get_value(long nodeid,String ts) {
    try {
        String sql="Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'";
        if (em == null) {
            throw new Exception("could not found URL object.");
        }
        else{
           return (String)em.createNativeQuery(sql).getSingleResult();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
   return null;
}
1 голос
/ 20 марта 2019

Вам необходимо вернуть getSingleResult ()

return (String)em.createNativeQuery(sql).getSingleResult();

Выполнить запрос SELECT, который возвращает один результат.

0 голосов
/ 20 марта 2019

Ваш метод всегда возвращает ноль.

Более того, может быть, это всего лишь фрагмент кода, и в вашем реальном коде чего-то не хватает, но когда em становится экземпляром? (Я предполагаю, что это переменная класса)

Наконец, вы звоните getSingleResult, но ничего не делаете с фактическим результатом, который вы должны вернуть, как показано в ответе @ user7294900

return (String) em.createNativeQuery(sql).getSingleResult();
...