java - MySQL - Iterating over columns in a result set -


i'm working on project user can assemble components of yoga class. it's spread across several files , large put here. trouble i'm having in 1 method need iterate on horizontal columns of result set returning 1 row mysql database.

i understand have position cursor on first row of result set (which believe doing). since have 1 row in result set (my variable rset), should using rset.next() 1 time, correct? , should able use simple loop iterate on each column , append value string builder. want skip first column , append each subsequent value until loop reaches columns null values. cannot find why code keeps returning "before start of result set" exception.

can spot wrong?

i'll post method method called method. (i posted in different question, believe nature of question has changed, i'm re-posting different title.)

    // query returns poses within specific section public string listposesinsection(string tablename, string sectionname) {     string strlist;     stringbuilder strbuilderlist  = new stringbuilder("");     // run query     try {         statement = connection.createstatement();         // query collect columns 1 specific row         rset = statement.executequery("select * " + tablename + " " + tablename + "_name = '" + sectionname + "'");         rset.next();           system.out.println("column count " + countcolumnsintable(tablename));         (int = 2; <= countcolumnsintable(tablename); i++) {// first value (0) null, skip first column (1)             system.out.println("test");             strbuilderlist.append(rset.getstring(i) + "\n"); // line 126 indicated in exception message             }     } catch (sqlexception e) {         e.printstacktrace();     }     strlist = strbuilderlist.tostring();     return strlist.replaceall(", $",""); // strips off trailing comma }  // method getting number of columns in table using metadata public int countcolumnsintable(string sectiontype) {     int count = 16;     try {         statement = connection.createstatement();         rset = statement.executequery("select * " + sectiontype);         rsmetadata = rset.getmetadata();         count = rsmetadata.getcolumncount();     } catch (sqlexception e) {         e.printstacktrace();     }     return count; } 

and here first part of exception message:

column count 26 java.sql.sqlexception: before start of result set @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1078) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:989) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:975) @ com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:920) @ com.mysql.jdbc.resultsetimpl.checkrowpos(resultsetimpl.java:855) @ com.mysql.jdbc.resultsetimpl.getstringinternal(resultsetimpl.java:5773) @ com.mysql.jdbc.resultsetimpl.getstring(resultsetimpl.java:5693) @ yogadatabaseaccess.listposesinsection(yogadatabaseaccess.java:126) @ yogasectiondesigner$5.actionperformed(yogasectiondesigner.java:231) 

looks me you're re-using rset between 2 methods. when countcolumnsintable has completed, rset variable pointing different result set before, in listposesinsection. , result set has not been advanced next, hence error message you're getting. want assign local resultset within method instead.

public int countcolumnsintable(string sectiontype) {     int count = 16;     try {         statement statement = connection.createstatement();         resultset rset = statement.executequery("select * " + sectiontype);         resultsetmetadata rsmetadata = rset.getmetadata();         count = rsmetadata.getcolumncount();     } catch (sqlexception e) {         e.printstacktrace();     }     // remember clean     return count; } 

Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -