org.apache.tools.ant.taskdefs

Class SQLExec

Implemented Interfaces:
Cloneable

public class SQLExec
extends JDBCTask

Executes a series of SQL statements on a database using JDBC.

Statements can either be read in from a text file using the src attribute or from between the enclosing SQL tags.

Multiple statements can be provided, separated by semicolons (or the defined delimiter). Individual lines within the statements can be commented using either --, // or REM at the start of the line.

The autocommit attribute specifies whether auto-commit should be turned on or off whilst executing the statements. If auto-commit is turned on each statement will be executed and committed. If it is turned off the statements will all be executed as one transaction.

The onerror attribute specifies how to proceed when an error occurs during the execution of one of the statements. The possible values are: continue execution, only show the error; stop execution and commit transaction; and abort execution and transaction and fail task.

Since:
Ant 1.2

Nested Class Summary

static class
SQLExec.DelimiterType
delimiters we support, "normal" and "row"
static class
SQLExec.OnError
The action a task should perform on an error, one of "continue", "stop" and "abort"
class
SQLExec.Transaction
Contains the definition of a new transaction element.

Field Summary

Fields inherited from class org.apache.tools.ant.Task

target, taskName, taskType, wrapper

Fields inherited from class org.apache.tools.ant.ProjectComponent

description, location, project

Method Summary

void
add(ResourceCollection rc)
Adds a collection of resources (nested element).
void
addFileset(FileSet set)
Adds a set of files (nested fileset attribute).
void
addText(String sql)
Set an inline SQL command to execute.
SQLExec.Transaction
createTransaction()
Add a SQL transaction to execute
protected void
execSQL(String sql, PrintStream out)
Exec the sql statement.
void
execute()
Load the sql file and then execute it
boolean
getExpandProperties()
is property expansion inside inline text enabled?
protected void
printResults(PrintStream out)
Deprecated. since 1.6.x.
protected void
printResults(ResultSet rs, PrintStream out)
print any results in the result set.
protected void
runStatements(Reader reader, PrintStream out)
read in lines and execute them
void
setAppend(boolean append)
whether output should be appended to or overwrite an existing file.
void
setDelimiter(String delimiter)
Set the delimiter that separates SQL statements.
void
setDelimiterType(SQLExec.DelimiterType delimiterType)
Set the delimiter type: "normal" or "row" (default "normal").
void
setEncoding(String encoding)
Set the file encoding to use on the SQL files read in
void
setEscapeProcessing(boolean enable)
Set escape processing for statements.
void
setExpandProperties(boolean expandProperties)
Enable property expansion inside nested text
void
setKeepformat(boolean keepformat)
whether or not format should be preserved.
void
setOnerror(SQLExec.OnError action)
Action to perform when statement fails: continue, stop, or abort optional; default "abort"
void
setOutput(File output)
Set the output file; optional, defaults to the Ant log.
void
setPrint(boolean print)
Print result sets from the statements; optional, default false
void
setShowheaders(boolean showheaders)
Print headers for result sets from the statements; optional, default true.
void
setShowtrailers(boolean showtrailers)
Print trailing info (rows affected) for the SQL Addresses Bug/Request #27446
void
setSrc(File srcFile)
Set the name of the SQL file to be run.

Methods inherited from class org.apache.tools.ant.taskdefs.JDBCTask

createClasspath, getClasspath, getConnection, getLoader, getLoaderMap, getPassword, getRdbms, getUrl, getUserId, getVersion, isAutocommit, isCaching, isValidRdbms, setAutocommit, setCaching, setClasspath, setClasspathRef, setDriver, setPassword, setRdbms, setUrl, setUserid, setVersion

Methods inherited from class org.apache.tools.ant.Task

bindToOwner, execute, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType

Methods inherited from class org.apache.tools.ant.ProjectComponent

clone, getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject

Method Details

add

public void add(ResourceCollection rc)
Adds a collection of resources (nested element).
Parameters:
rc - a collection of resources containing SQL commands, each resource is run in a separate transaction.
Since:
Ant 1.7

addFileset

public void addFileset(FileSet set)
Adds a set of files (nested fileset attribute).
Parameters:
set - a set of files contains SQL commands, each File is run in a separate transaction.

addText

public void addText(String sql)
Parameters:
sql - an inline string containing the SQL command.

createTransaction

public SQLExec.Transaction createTransaction()
Add a SQL transaction to execute
Returns:
a Transaction to be configured.

execSQL

protected void execSQL(String sql,
                       PrintStream out)
            throws SQLException
Exec the sql statement.
Parameters:
sql - the SQL statement to execute
out - the place to put output

execute

public void execute()
            throws BuildException
Load the sql file and then execute it
Overrides:
execute in interface Task
Throws:
BuildException - on error.

getExpandProperties

public boolean getExpandProperties()
is property expansion inside inline text enabled?
Returns:
true if properties are to be expanded.
Since:
Ant 1.7

printResults

protected void printResults(PrintStream out)
            throws SQLException

Deprecated. since 1.6.x. Use the two arg version instead.

print any results in the statement
Parameters:
out - the place to print results

printResults

protected void printResults(ResultSet rs,
                            PrintStream out)
            throws SQLException
print any results in the result set.
Parameters:
rs - the resultset to print information about
out - the place to print results
Since:
Ant 1.6.3

runStatements

protected void runStatements(Reader reader,
                             PrintStream out)
            throws SQLException,
                   IOException
read in lines and execute them
Parameters:
reader - the reader contains sql lines.
out - the place to output results.

setAppend

public void setAppend(boolean append)
whether output should be appended to or overwrite an existing file. Defaults to false.
Parameters:
append - if true append to an existing file.
Since:
Ant 1.5

setDelimiter

public void setDelimiter(String delimiter)
Set the delimiter that separates SQL statements. Defaults to ";"; optional

For example, set this to "go" and delimitertype to "ROW" for Sybase ASE or MS SQL Server.

Parameters:
delimiter - the separator.

setDelimiterType

public void setDelimiterType(SQLExec.DelimiterType delimiterType)
Set the delimiter type: "normal" or "row" (default "normal").

The delimiter type takes two values - normal and row. Normal means that any occurrence of the delimiter terminate the SQL command whereas with row, only a line containing just the delimiter is recognized as the end of the command.

Parameters:
delimiterType - the type of delimiter - "normal" or "row".

setEncoding

public void setEncoding(String encoding)
Set the file encoding to use on the SQL files read in
Parameters:
encoding - the encoding to use on the files

setEscapeProcessing

public void setEscapeProcessing(boolean enable)
Set escape processing for statements.
Parameters:
enable - if true enable escape processing, default is true.
Since:
Ant 1.6

setExpandProperties

public void setExpandProperties(boolean expandProperties)
Enable property expansion inside nested text
Parameters:
expandProperties - if true expand properties.
Since:
Ant 1.7

setKeepformat

public void setKeepformat(boolean keepformat)
whether or not format should be preserved. Defaults to false.
Parameters:
keepformat - The keepformat to set

setOnerror

public void setOnerror(SQLExec.OnError action)
Action to perform when statement fails: continue, stop, or abort optional; default "abort"
Parameters:
action - the action to perform on statement failure.

setOutput

public void setOutput(File output)
Set the output file; optional, defaults to the Ant log.
Parameters:
output - the output file to use for logging messages.

setPrint

public void setPrint(boolean print)
Print result sets from the statements; optional, default false
Parameters:
print - if true print result sets.

setShowheaders

public void setShowheaders(boolean showheaders)
Print headers for result sets from the statements; optional, default true.
Parameters:
showheaders - if true print headers of result sets.

setShowtrailers

public void setShowtrailers(boolean showtrailers)
Print trailing info (rows affected) for the SQL Addresses Bug/Request #27446
Parameters:
showtrailers - if true prints the SQL rows affected
Since:
Ant 1.7

setSrc

public void setSrc(File srcFile)
Set the name of the SQL file to be run. Required unless statements are enclosed in the build file
Parameters:
srcFile - the file containing the SQL command.