tutak
tutak

Reputation: 1098

JDBC's rs.getString() won't return the value of the query result

I have some problems with JDBC's rs.getString("column_name") basically it would not assign the value recieved from the query result, I have a String ris which is supposed to get the row name from rs.getString, for semplicity of the question I'm using ris and my query returns only one row. This is the code:

         //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;                  

I semplified the code, so it would be easy to focus on where the problem is. Thanks in advance!

Upvotes: 0

Views: 5094

Answers (2)

Anantha Sharma
Anantha Sharma

Reputation: 10098

try this, just remove the rs.last() call in the if condition.. also i agree with @Thilo about using prepared statements.

 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();

Upvotes: 1

Thilo
Thilo

Reputation: 262584

if (rs.last())
   while (rs.next())

That won't work, because after you have called last , you are at the last row and next will always return false (it would return true and take you to the next row if there was one left).

And please use a prepared statement with bind variables!

And finally close ResultSet and Connection (or use Jakarta Commons DbUtils).

Upvotes: 6

Related Questions