Rs.getString () JDBC не будет возвращать значение результата запроса - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть некоторые проблемы с rs.getString ("column_name") в JDBC, в основном он не будет присваивать значение, полученное из результата запроса, у меня есть строка ris , которая должна получить имя строки из rs.getString, для простоты вопроса я использую ris , и мой запрос возвращает только одну строку. Это код:

         //It returns null, or any other values I use to initialize the variable 
         String ris=null;

         q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN(" + tes + ")";

                    ResultSet rs = st.executeQuery(q);
                    if (!rs.last()) {
                          ris = "no";
                                     } 
                    else {

                      //This is the place where I'm having problems
                        while(rs.next()){
                      //ris is supposed to get the name of the query result having column "nome"
                        ris=rs.getString("nome");

                                      }
                         }


              conn.close();

        } catch (Exception e) {
              ris = e.toString();
        }

         return ris;                  

Я расшифровал код, поэтому было бы легко сосредоточиться на том, где проблема. Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 01 сентября 2011
if (rs.last())
   while (rs.next())

Это не сработает, потому что после того, как вы вызвали last, вы находитесь в последнем ряду и next всегда вернет false (он вернет true и перенесет вас в следующий ряд, если есть остался один).

И, пожалуйста, используйте подготовленный оператор с переменными связывания!

И, наконец, закройте ResultSet и Connection (или используйте Jakarta Commons DbUtils).

1 голос
/ 01 сентября 2011

попробуйте это, просто удалите вызов rs.last() в условии if .. также я согласен с @Thilo об использовании подготовленных операторов.

 String ris=null;

         q = "SELECT DISTINCT nome FROM malattia WHERE eta='" + age + "' AND sesso='" + sexstr + "' AND etnia='" + etniastr + "' AND sintomi IN(" + tes + ")";

                    ResultSet rs = st.executeQuery(q);
                    rs.first(); // go to first record.
                      //This is the place where I'm having problems
                        while(rs.next()){
                      //ris is supposed to get the name of the query result having column "nome"
                        ris=rs.getString("nome");

                                      }
                         }


              conn.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...