|
|
|
@@ -116,6 +116,21 @@ public class SQLExec extends Task { |
|
|
|
* SQL input command |
|
|
|
*/ |
|
|
|
private String sqlCommand = ""; |
|
|
|
|
|
|
|
/** |
|
|
|
* Print SQL results. |
|
|
|
*/ |
|
|
|
private boolean print = false; |
|
|
|
|
|
|
|
/** |
|
|
|
* Print header columns. |
|
|
|
*/ |
|
|
|
private boolean showheaders = true; |
|
|
|
|
|
|
|
/** |
|
|
|
* Results Output file. |
|
|
|
*/ |
|
|
|
private File output = null; |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the name of the sql file to be run. |
|
|
|
@@ -165,6 +180,27 @@ public class SQLExec extends Task { |
|
|
|
public void setAutocommit(boolean autocommit) { |
|
|
|
this.autocommit = autocommit; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the print flag. |
|
|
|
*/ |
|
|
|
public void setPrint(boolean print) { |
|
|
|
this.print = print; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the showheaders flag. |
|
|
|
*/ |
|
|
|
public void setShowheaders(boolean showheaders) { |
|
|
|
this.showheaders = showheaders; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the output file. |
|
|
|
*/ |
|
|
|
public void setOutput(File output) { |
|
|
|
this.output = output; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Load the sql file and then execute it |
|
|
|
@@ -282,12 +318,16 @@ public class SQLExec extends Task { |
|
|
|
/** |
|
|
|
* Exec the sql statement. |
|
|
|
*/ |
|
|
|
protected void execSQL(String sql) throws SQLException{ |
|
|
|
protected void execSQL(String sql) throws SQLException { |
|
|
|
if (!statement.execute(sql)) { |
|
|
|
log(statement.getUpdateCount()+" rows affected", |
|
|
|
Project.MSG_VERBOSE); |
|
|
|
} |
|
|
|
|
|
|
|
if (print) { |
|
|
|
printResults(); |
|
|
|
} |
|
|
|
|
|
|
|
SQLWarning warning = conn.getWarnings(); |
|
|
|
while(warning!=null){ |
|
|
|
log(warning + " sql warning", Project.MSG_VERBOSE); |
|
|
|
@@ -296,4 +336,49 @@ public class SQLExec extends Task { |
|
|
|
conn.clearWarnings(); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* print any results in the statement. |
|
|
|
*/ |
|
|
|
protected void printResults() throws java.sql.SQLException { |
|
|
|
ResultSet rs = null; |
|
|
|
PrintStream out = System.out; |
|
|
|
try { |
|
|
|
if (output != null) { |
|
|
|
out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output))); |
|
|
|
} |
|
|
|
while ((rs = statement.getResultSet()) != null) { |
|
|
|
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); |
|
|
|
} |
|
|
|
while (rs.next()) { |
|
|
|
for (int col = 1; col < columnCount; col++) { |
|
|
|
line.append(rs.getString(col).trim()); |
|
|
|
line.append(","); |
|
|
|
} |
|
|
|
line.append(rs.getString(columnCount).trim()); |
|
|
|
out.println(line); |
|
|
|
line.setLength(0); |
|
|
|
} |
|
|
|
statement.getMoreResults(); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (IOException ioe) { |
|
|
|
throw new BuildException("Error writing " + output.getAbsolutePath(), ioe, location); |
|
|
|
} |
|
|
|
finally { |
|
|
|
if (out != null) { |
|
|
|
out.close(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |