conor       00/10/31 21:59:17

  Modified:    src/main/org/apache/tools/ant/taskdefs SQLExec.java
  Log:
  Fix SQLExec printing of results. It was using the return from getResultSet to
  indicate that there are no more result sets but I think it should have been 
using
  the result of getMoreResults(). I have made the appropriate change. I have 
also
  made changes to handle NULL results
  Reported by:  Johan Adel�w <[EMAIL PROTECTED]>
  
  Revision  Changes    Path
  1.11      +34 -21    
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
  
  Index: SQLExec.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/SQLExec.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- SQLExec.java      2000/10/10 14:56:35     1.10
  +++ SQLExec.java      2000/11/01 05:59:16     1.11
  @@ -522,31 +522,44 @@
                log("Opening PrintStream to output file " + output, 
Project.MSG_VERBOSE);
                   out = new PrintStream(new BufferedOutputStream(new 
FileOutputStream(output)));
               }
  -            while ((rs = statement.getResultSet()) != null) {
  -             log("Processing new result set.", Project.MSG_VERBOSE);
  -                ResultSetMetaData md = rs.getMetaData();
  -                int columnCount = md.getColumnCount();
  -                StringBuffer line = new StringBuffer();
  -                if (showheaders) {
  -                    for (int col = 1; col < columnCount; col++) {
  -                        line.append(md.getColumnName(col));
  -                        line.append(",");
  +            do {
  +                rs = statement.getResultSet();
  +                if (rs != null) {
  +                 log("Processing new result set.", Project.MSG_VERBOSE);
  +                    ResultSetMetaData md = rs.getMetaData();
  +                    int columnCount = md.getColumnCount();
  +                    StringBuffer line = new StringBuffer();
  +                    if (showheaders) {
  +                        for (int col = 1; col < columnCount; col++) {
  +                            line.append(md.getColumnName(col));
  +                            line.append(",");
  +                        }
  +                        line.append(md.getColumnName(columnCount));
  +                        out.println(line);
  +                        line.setLength(0);
                       }
  -                    line.append(md.getColumnName(columnCount));
  -                    out.println(line);
  -                    line.setLength(0);
  -                }
  -                while (rs.next()) {
  -                    for (int col = 1; col < columnCount; col++) {
  -                        line.append(rs.getString(col).trim());
  -                        line.append(",");
  +                    while (rs.next()) {
  +                        boolean first = true;
  +                        for (int col = 1; col <= columnCount; col++) {
  +                            String columnValue = rs.getString(col);
  +                            if (columnValue != null) {
  +                                columnValue = columnValue.trim();
  +                            }
  +                             
  +                            if (first) {
  +                                first = false;
  +                            }
  +                            else {
  +                                line.append(",");
  +                            }
  +                            line.append(columnValue);
  +                        }
  +                        out.println(line);
  +                        line.setLength(0);
                       }
  -                    line.append(rs.getString(columnCount).trim());
  -                    out.println(line);
  -                    line.setLength(0);
                   }
  -                statement.getMoreResults();
               }
  +            while (statement.getMoreResults());
           }
           catch (IOException ioe) {
               throw new BuildException("Error writing " + 
output.getAbsolutePath(), ioe, location);
  
  
  

Reply via email to