A facade over Java's normal JDBC APIs providing greatly simplified
resource management and result set handling. Under the covers the
facade hides away details associated with getting connections,
constructing and configuring statements, interacting with the
connection, closing resources and logging errors. Special
features of the facade include using closures to iterate
through result sets, a special GString syntax for representing
prepared statements and treating result sets like collections
of maps with the normal Groovy collection methods available.
or Object[] support named or named ordinal parameters.
These methods are useful for queries with large numbers of parameters - though the GString
variations are often preferred in such cases too.
Named parameter queries use placeholder values in the query String. Two forms are supported
':propname1' and '?.propname2'. For these variations, a single model object is
supplied in the parameter list. The propname refers to a property of that model object.
The model object could be a map, Expando or domain class instance. Here are some examples:
println sql.rows('select * from PROJECT where name=:foo', [foo:'Gradle'])
println sql.rows('select * from PROJECT where name=:foo and id=?.bar', [foo:'Gradle', bar:40])
class MyDomainClass { def baz = 'Griffon' }
println sql.rows('select * from PROJECT where name=?.baz', new MyDomainClass())
Named ordinal parameter queries have multiple model objects with the index number (starting
at 1) also supplied in the placeholder. Only the question mark variation of placeholder is supported.
Here is an example:
println sql.rows("select * from PROJECT where name=?1.baz and id=?2.num", new MyDomainClass(), [num:30])
More details
See the method and constructor JavaDoc for more details.
For advanced usage, the class provides numerous extension points for overriding the
facade behavior associated with the various aspects of managing
the interaction with the underlying database.
Authors: Chris Stevenson James Strachan Paul King Marc DeXeT John Bito John Hurst Version: \$Revision\$
Method Summary
static InParameter
ARRAY (Object value)
static InParameter
BIGINT (Object value)
static InParameter
BINARY (Object value)
static InParameter
BIT (Object value)
static InParameter
BLOB (Object value)
static InParameter
BOOLEAN (Object value)
static InParameter
CHAR (Object value)
static InParameter
CLOB (Object value)
static InParameter
DATALINK (Object value)
static InParameter
DATE (Object value)
static InParameter
DECIMAL (Object value)
static InParameter
DISTINCT (Object value)
static InParameter
DOUBLE (Object value)
static InParameter
FLOAT (Object value)
static InParameter
INTEGER (Object value)
static InParameter
JAVA_OBJECT (Object value)
static InParameter
LONGVARBINARY (Object value)
static InParameter
LONGVARCHAR (Object value)
static InParameter
NULL (Object value)
static InParameter
NUMERIC (Object value)
static InParameter
OTHER (Object value)
static InParameter
REAL (Object value)
static InParameter
REF (Object value)
static InParameter
SMALLINT (Object value)
static InParameter
STRUCT (Object value)
static InParameter
TIME (Object value)
static InParameter
TIMESTAMP (Object value)
static InParameter
TINYINT (Object value)
static InParameter
VARBINARY (Object value)
static InParameter
VARCHAR (Object value)
protected List
asList (String sql, ResultSet rs)
Hook to allow derived classes to override list of result collection behavior.
protected List
asList (String sql, ResultSet rs, Closure metaClosure)
protected String
asSql (GString gstring, List values)
Hook to allow derived classes to override sql generation from GStrings.
void
cacheConnection (Closure closure)
void
cacheStatements (Closure closure)
Caches every created preparedStatement in Closure closure
Every cached preparedStatement is closed after closure has been called.
int
call (String sql)
int
call (GString gstring)
int
call (String sql, List params)
int
call (String sql, Object[] params)
Performs a stored procedure call with the given parameters.
void
call (String sql, List params, Closure closure)
void
call (GString gstring, Closure closure)
Performs a stored procedure call with the given parameters,
calling the closure once with all result objects.
SqlWithParams
checkForNamedParams (String sql, List params)
void
close ()
protected void
closeResources (Connection connection, Statement statement, ResultSet results)
An extension point allowing derived classes to change the behavior
of resource closing.
protected void
closeResources (Connection connection, Statement statement)
protected void
closeResources (Connection connection)
void
commit ()
protected void
configure (Statement statement)
protected Connection
createConnection ()
An extension point allowing derived classes to change the behavior of
connection creation.
protected Sql.AbstractQueryCommand
createPreparedQueryCommand (String sql, List queryParams)
protected Sql.AbstractQueryCommand
createQueryCommand (String sql)
Stub needed for testing.
DataSet
dataSet (String table)
DataSet
dataSet (Class type)
void
eachRow (String sql, Closure closure)
void
eachRow (String sql, Closure metaClosure, Closure rowClosure)
void
eachRow (String sql, List params, Closure metaClosure, Closure closure)
Performs the given SQL query calling the given Closure with each row of the result set.
void
eachRow (String sql, List params, Closure closure)
Performs the given SQL query calling the given Closure with each row of the result set.
void
eachRow (GString gstring, Closure metaClosure, Closure closure)
void
eachRow (GString gstring, Closure closure)
boolean
execute (String sql)
boolean
execute (String sql, List params)
Executes the given piece of SQL with parameters.
boolean
execute (String sql, Object[] params)
Executes the given piece of SQL with parameters.
boolean
execute (GString gstring)
List
executeInsert (String sql)
List
executeInsert (String sql, List params)
Executes the given SQL statement (typically an INSERT statement).
List
executeInsert (String sql, Object[] params)
Executes the given SQL statement (typically an INSERT statement).
List
executeInsert (GString gstring)
protected ResultSet
executePreparedQuery (String sql, List params)
protected ResultSet
executeQuery (String sql)
Hook to allow derived classes to access ResultSet returned from query.
int
executeUpdate (String sql)
int
executeUpdate (String sql, List params)
Executes the given SQL update with parameters.
int
executeUpdate (String sql, Object[] params)
Executes the given SQL update with parameters.
int
executeUpdate (GString gstring)
static ExpandedVariable
expand (Object object)
When using GString SQL queries, allows a variable to be expanded
in the Sql string rather than representing an sql parameter.
protected int
findWhereKeyword (String sql)
Hook to allow derived classes to override where clause sniffing.
Object
firstRow (String sql)
Performs the given SQL query and return the first row of the result set.
Object
firstRow (GString gstring)
Object
firstRow (String sql, List params)
Object
firstRow (String sql, Object[] params)
Connection
getConnection ()
DataSource
getDataSource ()
protected List
getParameters (GString gstring)
Hook to allow derived classes to override behavior associated with
extracting params from a GString.
int
getResultSetConcurrency ()
Gets the resultSetConcurrency for statements created using the connection.
int
getResultSetHoldability ()
Gets the resultSetHoldability for statements created using the connection.
int
getResultSetType ()
Gets the resultSetType for statements created using the connection.
int
getUpdateCount ()
@return Returns the updateCount.
static InParameter
in (int type, Object value)
static InOutParameter
inout (InParameter in)
Create an inout parameter using this in parameter.
boolean
isCacheNamedQueries ()
boolean
isCacheStatements ()
boolean
isEnableNamedQueries ()
boolean
isWithinBatch ()
Returns true if the current Sql object is currently executing a withBatch
method call.
static void
loadDriver (String driverClassName)
Attempts to load the JDBC driver on the thread, current or system class
loaders
static Sql
newInstance (String url)
Creates a new Sql instance given a JDBC connection URL.
static Sql
newInstance (String url, Properties properties)
Creates a new Sql instance given a JDBC connection URL
and some properties.
static Sql
newInstance (String url, Properties properties, String driverClassName)
Creates a new Sql instance given a JDBC connection URL,
some properties and a driver class name.
static Sql
newInstance (String url, String user, String password)
Creates a new Sql instance given a JDBC connection URL,
a username and a password.
static Sql
newInstance (String url, String user, String password, String driverClassName)
Creates a new Sql instance given a JDBC connection URL,
a username, a password and a driver class name.
static Sql
newInstance (String url, String driverClassName)
Creates a new Sql instance given a JDBC connection URL
and a driver class name.
static Sql
newInstance (Map args)
Creates a new Sql instance given parameters in a Map.
protected String
nullify (String sql)
Hook to allow derived classes to override null handling.
static OutParameter
out (int type)
Create a new OutParameter
void
query (String sql, Closure closure)
void
query (String sql, List params, Closure closure)
Performs the given SQL query, which should return a single
ResultSet
object.
void
query (GString gstring, Closure closure)
Performs the given SQL query, which should return a single
ResultSet
object.
static ResultSetOutParameter
resultSet (int type)
Create a new ResultSetOutParameter
void
rollback ()
If this SQL object was created with a Connection then this method rolls back
the connection.
List
rows (String sql)
List
rows (String sql, Closure metaClosure)
List
rows (String sql, List params)
Performs the given SQL query and return the rows of the result set.
List
rows (String sql, Object[] params)
List
rows (String sql, List params, Closure metaClosure)
List
rows (GString gstring)
Performs the given SQL query and return the rows of the result set.
List
rows (GString gstring, Closure metaClosure)
void
setCacheNamedQueries (boolean cacheNamedQueries)
void
setCacheStatements (boolean cacheStatements)
@return boolean true if cache is enabled (default is false)
void
setEnableNamedQueries (boolean enableNamedQueries)
protected void
setInternalConnection (Connection conn)
protected void
setObject (PreparedStatement statement, int i, Object value)
protected void
setParameters (List params, PreparedStatement statement)
void
setResultSetConcurrency (int resultSetConcurrency)
Sets the resultSetConcurrency for statements created using the connection.
void
setResultSetHoldability (int resultSetHoldability)
Sets the resultSetHoldability for statements created using the connection.
void
setResultSetType (int resultSetType)
Sets the resultSetType for statements created using the connection.
int[]
withBatch (Closure closure)
int[]
withBatch (int batchSize, Closure closure)
void
withStatement (Closure configureStatement)
void
withTransaction (Closure closure)
Performs the closure within a transaction using a cached connection.
ARRAY
public static final OutParameter ARRAY
BIGINT
public static final OutParameter BIGINT
BINARY
public static final OutParameter BINARY
BIT
public static final OutParameter BIT
BLOB
public static final OutParameter BLOB
BOOLEAN
public static final OutParameter BOOLEAN
CHAR
public static final OutParameter CHAR
CLOB
public static final OutParameter CLOB
DATALINK
public static final OutParameter DATALINK
DATE
public static final OutParameter DATE
DECIMAL
public static final OutParameter DECIMAL
DISTINCT
public static final OutParameter DISTINCT
DOUBLE
public static final OutParameter DOUBLE
FLOAT
public static final OutParameter FLOAT
INTEGER
public static final OutParameter INTEGER
JAVA_OBJECT
public static final OutParameter JAVA_OBJECT
LOG
protected static final Logger LOG
Hook to allow derived classes to access the log
LONGVARBINARY
public static final OutParameter LONGVARBINARY
LONGVARCHAR
public static final OutParameter LONGVARCHAR
NULL
public static final OutParameter NULL
NUMERIC
public static final OutParameter NUMERIC
OTHER
public static final OutParameter OTHER
REAL
public static final OutParameter REAL
REF
public static final OutParameter REF
SMALLINT
public static final OutParameter SMALLINT
STRUCT
public static final OutParameter STRUCT
TIME
public static final OutParameter TIME
TIMESTAMP
public static final OutParameter TIMESTAMP
TINYINT
public static final OutParameter TINYINT
VARBINARY
public static final OutParameter VARBINARY
VARCHAR
public static final OutParameter VARCHAR
Sql
public Sql (DataSource dataSource)
Constructs an SQL instance using the given DataSource. Each operation
will use a Connection from the DataSource pool and close it when the
operation is completed putting it back into the pool.
Parameters: dataSource
- the DataSource to use
Sql
public Sql (Connection connection)
Sql
public Sql (Sql parent)
ARRAY
public static InParameter ARRAY (Object value)
BIGINT
public static InParameter BIGINT (Object value)
BINARY
public static InParameter BINARY (Object value)
BIT
public static InParameter BIT (Object value)
BLOB
public static InParameter BLOB (Object value)
BOOLEAN
public static InParameter BOOLEAN (Object value)
CHAR
public static InParameter CHAR (Object value)
CLOB
public static InParameter CLOB (Object value)
DATALINK
public static InParameter DATALINK (Object value)
DATE
public static InParameter DATE (Object value)
DECIMAL
public static InParameter DECIMAL (Object value)
DISTINCT
public static InParameter DISTINCT (Object value)
DOUBLE
public static InParameter DOUBLE (Object value)
FLOAT
public static InParameter FLOAT (Object value)
INTEGER
public static InParameter INTEGER (Object value)
JAVA_OBJECT
public static InParameter JAVA_OBJECT (Object value)
LONGVARBINARY
public static InParameter LONGVARBINARY (Object value)
LONGVARCHAR
public static InParameter LONGVARCHAR (Object value)
NULL
public static InParameter NULL (Object value)
NUMERIC
public static InParameter NUMERIC (Object value)
OTHER
public static InParameter OTHER (Object value)
REAL
public static InParameter REAL (Object value)
REF
public static InParameter REF (Object value)
SMALLINT
public static InParameter SMALLINT (Object value)
STRUCT
public static InParameter STRUCT (Object value)
TIME
public static InParameter TIME (Object value)
TIMESTAMP
public static InParameter TIMESTAMP (Object value)
TINYINT
public static InParameter TINYINT (Object value)
VARBINARY
public static InParameter VARBINARY (Object value)
VARCHAR
public static InParameter VARCHAR (Object value)
asList
protected List asList (String sql, ResultSet rs)
Hook to allow derived classes to override list of result collection behavior.
The default behavior is to return a list of GroovyRowResult objects corresponding
to each row in the ResultSet.throws: SQLException if a database error occurs
Parameters: sql
- query to executers
- the ResultSet to processReturns: the resulting list of rows
asList
protected List asList (String sql, ResultSet rs, Closure metaClosure)
asSql
protected String asSql (GString gstring, List values)
Hook to allow derived classes to override sql generation from GStrings.
Parameters: gstring
- a GString containing the SQL query with embedded paramsvalues
- the values to embedReturns: the SQL version of the given query using ? instead of any parameter See Also: expand(Object)
cacheConnection
public void cacheConnection (Closure closure)
cacheStatements
public void cacheStatements (Closure closure)
Caches every created preparedStatement in Closure closure
Every cached preparedStatement is closed after closure has been called.
If the closure takes a single argument, it will be called
with the connection, otherwise it will be called with no arguments.throws: SQLException if a database error occurs
Parameters: closure
- the given closureSee Also: setCacheStatements(boolean)
call
public int call (String sql)
call
public int call (GString gstring)
call
public int call (String sql, List params)
call
public int call (String sql, Object[] params)
Performs a stored procedure call with the given parameters.
An Object array variant of call(String, List) .throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- an array of parametersReturns: the number of rows updated or 0 for SQL statements that return nothing See Also: call(String)
call
public void call (String sql, List params, Closure closure)
call
public void call (GString gstring, Closure closure)
Performs a stored procedure call with the given parameters,
calling the closure once with all result objects.
See call(String, List, Closure) for more details about
creating a Hemisphere(IN first, IN last, OUT dwells)
stored procedure.
Once created, it can be called like this:
def first = 'Scott'
def last = 'Davis'
sql.call "{call Hemisphere($first, $last, ${Sql.VARCHAR})}", { dwells ->
println dwells
}
As another example, see call(String, List, Closure) for more details about
creating a FullName(IN first)
stored function.
Once created, it can be called like this:
def first = 'Sam'
sql.call("{$Sql.VARCHAR = call FullName($first)}") { name ->
assert name == 'Sam Pullara'
}
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: gstring
- a GString containing the SQL query with embedded paramsclosure
- called for each row with a GroovyResultSetSee Also: call(String, List, Closure) expand(Object)
checkForNamedParams
public SqlWithParams checkForNamedParams (String sql, List params)
close
public void close ()
closeResources
protected void closeResources (Connection connection, Statement statement, ResultSet results)
An extension point allowing derived classes to change the behavior
of resource closing.
Parameters: connection
- the connection to closestatement
- the statement to closeresults
- the results to close
closeResources
protected void closeResources (Connection connection, Statement statement)
closeResources
protected void closeResources (Connection connection)
commit
public void commit ()
configure
protected void configure (Statement statement)
createConnection
protected Connection createConnection ()
An extension point allowing derived classes to change the behavior of
connection creation. The default behavior is to either use the
supplied connection or obtain it from the supplied datasource.throws: java.sql.SQLException if a SQL error occurs
Returns: the connection associated with this Sql
createPreparedQueryCommand
protected Sql.AbstractQueryCommand createPreparedQueryCommand (String sql, List queryParams)
createQueryCommand
protected Sql.AbstractQueryCommand createQueryCommand (String sql)
Stub needed for testing. Called when a connection is opened by one of the command-pattern classes
so that a test case can monitor the state of the connection through its subclass.
Parameters: conn
- the connection that is about to be used by a command
dataSet
public DataSet dataSet (String table)
dataSet
public DataSet dataSet (Class type)
eachRow
public void eachRow (String sql, Closure closure)
eachRow
public void eachRow (String sql, Closure metaClosure, Closure rowClosure)
eachRow
public void eachRow (String sql, List params, Closure metaClosure, Closure closure)
Performs the given SQL query calling the given Closure with each row of the result set.
The row will be a GroovyResultSet
which is a ResultSet
that supports accessing the fields using property style notation and ordinal index values.
In addition, the metaClosure
will be called once passing in the
ResultSetMetaData
as argument.
The query may contain placeholder question marks which match the given list of parameters.
Example usage:
def printColNames = { meta ->
(1..meta.columnCount).each {
print meta.getColumnLabel(it).padRight(20)
}
println()
}
def printRow = { row ->
row.toRowResult().values().each{ print it.toString().padRight(20) }
println()
}
sql.eachRow("select * from PERSON where lastname like ?", ['%a%'], printColNames, printRow)
This method supports named and named ordinal parameters.
See the class Javadoc for more details.
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the sql statementparams
- a list of parametersmetaClosure
- called for meta data (only once after sql execution)closure
- called for each row with a GroovyResultSet
eachRow
public void eachRow (String sql, List params, Closure closure)
Performs the given SQL query calling the given Closure with each row of the result set.
The row will be a GroovyResultSet
which is a ResultSet
that supports accessing the fields using property style notation and ordinal index values.
The query may contain placeholder question marks which match the given list of parameters.
Example usage:
sql.eachRow("select * from PERSON where lastname like ?", ['%a%']) { row ->
println "${row[1]} $row.lastname"
}
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the sql statementparams
- a list of parametersclosure
- called for each row with a GroovyResultSet
eachRow
public void eachRow (GString gstring, Closure metaClosure, Closure closure)
eachRow
public void eachRow (GString gstring, Closure closure)
execute
public boolean execute (String sql)
execute
public boolean execute (String sql, List params)
Executes the given piece of SQL with parameters.
Also saves the updateCount, if any, for subsequent examination.
Example usage:
sql.execute """
insert into PERSON (id, firstname, lastname, location_id) values (?, ?, ?, ?)
""", [1, "Guillaume", "Laforge", 10]
assert sql.updateCount == 1
This method supports named and named ordinal parameters.
See the class Javadoc for more details.
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- a list of parametersReturns: true
if the first result is a ResultSet
object; false
if it is an update count or there are
no results
execute
public boolean execute (String sql, Object[] params)
Executes the given piece of SQL with parameters.
An Object array variant of execute(String, List) .throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- an array of parametersReturns: true
if the first result is a ResultSet
object; false
if it is an update count or there are
no results
execute
public boolean execute (GString gstring)
executeInsert
public List executeInsert (String sql)
executeInsert
public List executeInsert (String sql, List params)
Executes the given SQL statement (typically an INSERT statement).
Use this variant when you want to receive the values of any
auto-generated columns, such as an autoincrement ID field.
The query may contain placeholder question marks which match the given list of parameters.
See executeInsert(GString) for more details.
This method supports named and named ordinal parameters.
See the class Javadoc for more details.
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- The SQL statement to executeparams
- The parameter values that will be substituted
into the SQL statement's parameter slotsReturns: A list of the auto-generated column values for each
inserted row (typically auto-generated keys)
executeInsert
public List executeInsert (String sql, Object[] params)
Executes the given SQL statement (typically an INSERT statement).
An Object array variant of executeInsert(String, List) .throws: SQLException if a database access error occurs
Parameters: sql
- The SQL statement to executeparams
- The parameter values that will be substituted
into the SQL statement's parameter slotsReturns: A list of the auto-generated column values for each
inserted row (typically auto-generated keys)
executeInsert
public List executeInsert (GString gstring)
executePreparedQuery
protected final ResultSet executePreparedQuery (String sql, List params)
executeQuery
protected final ResultSet executeQuery (String sql)
Hook to allow derived classes to access ResultSet returned from query.throws: SQLException if a database error occurs
Parameters: sql
- query to executeReturns: the resulting ResultSet
executeUpdate
public int executeUpdate (String sql)
executeUpdate
public int executeUpdate (String sql, List params)
Executes the given SQL update with parameters.
This method supports named and named ordinal parameters.
See the class Javadoc for more details.
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- a list of parametersReturns: the number of rows updated or 0 for SQL statements that return nothing
executeUpdate
public int executeUpdate (String sql, Object[] params)
Executes the given SQL update with parameters.
An Object array variant of executeUpdate(String, List) .throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- an array of parametersReturns: the number of rows updated or 0 for SQL statements that return nothing
executeUpdate
public int executeUpdate (GString gstring)
expand
public static ExpandedVariable expand (Object object)
When using GString SQL queries, allows a variable to be expanded
in the Sql string rather than representing an sql parameter.
Example usage:
def fieldName = 'firstname'
def fieldOp = Sql.expand('like')
def fieldVal = '%a%'
sql.query "select * from PERSON where ${Sql.expand(fieldName)} $fieldOp ${fieldVal}", { ResultSet rs ->
while (rs.next()) println rs.getString('firstname')
}
// query will be 'select * from PERSON where firstname like ?'
// params will be [fieldVal]
Parameters: object
- the object of interestReturns: the expanded variable See Also: expand(Object)
findWhereKeyword
protected int findWhereKeyword (String sql)
Hook to allow derived classes to override where clause sniffing.
Default behavior is to find the first 'where' keyword in the sql
doing simple avoidance of the word 'where' within quotes.
Parameters: sql
- the SQL statementReturns: the index of the found keyword or -1 if not found
firstRow
public Object firstRow (String sql)
Performs the given SQL query and return the first row of the result set.
Example usage:
def ans = sql.firstRow("select * from PERSON where firstname like 'S%'")
println ans.firstname
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementReturns: a GroovyRowResult object or null
if no row is found
firstRow
public Object firstRow (GString gstring)
firstRow
public Object firstRow (String sql, List params)
firstRow
public Object firstRow (String sql, Object[] params)
getConnection
public Connection getConnection ()
getDataSource
public DataSource getDataSource ()
getParameters
protected List getParameters (GString gstring)
Hook to allow derived classes to override behavior associated with
extracting params from a GString.
Parameters: gstring
- a GString containing the SQL query with embedded paramsReturns: extracts the parameters from the expression as a List See Also: expand(Object)
getResultSetConcurrency
public int getResultSetConcurrency ()
Gets the resultSetConcurrency for statements created using the connection.
Returns: the current resultSetConcurrency value Since: 1.5.2
getResultSetHoldability
public int getResultSetHoldability ()
Gets the resultSetHoldability for statements created using the connection.
Returns: the current resultSetHoldability value or -1 if not set Since: 1.5.2
getResultSetType
public int getResultSetType ()
Gets the resultSetType for statements created using the connection.
Returns: the current resultSetType value Since: 1.5.2
getUpdateCount
public int getUpdateCount ()
Returns: Returns the updateCount.
in
public static InParameter in (int type, Object value)
inout
public static InOutParameter inout (InParameter in)
Create an inout parameter using this in parameter.
Parameters: in
- the InParameter of interestReturns: the resulting InOutParameter
isCacheNamedQueries
public boolean isCacheNamedQueries ()
isCacheStatements
public boolean isCacheStatements ()
isEnableNamedQueries
public boolean isEnableNamedQueries ()
isWithinBatch
public boolean isWithinBatch ()
Returns true if the current Sql object is currently executing a withBatch
method call.
Returns: true if a withBatch call is currently being executed.
loadDriver
public static void loadDriver (String driverClassName)
Attempts to load the JDBC driver on the thread, current or system class
loadersthrows: ClassNotFoundException if the class cannot be found or loaded
Parameters: driverClassName
- the fully qualified class name of the driver class
newInstance
public static Sql newInstance (String url)
Creates a new Sql instance given a JDBC connection URL.throws: SQLException if a database access error occurs
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
Returns: a new Sql instance with a connection
newInstance
public static Sql newInstance (String url, Properties properties)
Creates a new Sql instance given a JDBC connection URL
and some properties.throws: SQLException if a database access error occurs
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
properties
- a list of arbitrary string tag/value pairs
as connection arguments; normally at least a "user" and
"password" property should be includedReturns: a new Sql instance with a connection
newInstance
public static Sql newInstance (String url, Properties properties, String driverClassName)
Creates a new Sql instance given a JDBC connection URL,
some properties and a driver class name.throws: SQLException if a database access error occurs throws: ClassNotFoundException if the class cannot be found or loaded
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
properties
- a list of arbitrary string tag/value pairs
as connection arguments; normally at least a "user" and
"password" property should be includeddriverClassName
- the fully qualified class name of the driver classReturns: a new Sql instance with a connection
newInstance
public static Sql newInstance (String url, String user, String password)
Creates a new Sql instance given a JDBC connection URL,
a username and a password.throws: SQLException if a database access error occurs
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
user
- the database user on whose behalf the connection
is being madepassword
- the user's passwordReturns: a new Sql instance with a connection
newInstance
public static Sql newInstance (String url, String user, String password, String driverClassName)
Creates a new Sql instance given a JDBC connection URL,
a username, a password and a driver class name.throws: SQLException if a database access error occurs throws: ClassNotFoundException if the class cannot be found or loaded
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
user
- the database user on whose behalf the connection
is being madepassword
- the user's passworddriverClassName
- the fully qualified class name of the driver classReturns: a new Sql instance with a connection
newInstance
public static Sql newInstance (String url, String driverClassName)
Creates a new Sql instance given a JDBC connection URL
and a driver class name.throws: SQLException if a database access error occurs throws: ClassNotFoundException if the class cannot be found or loaded
Parameters: url
- a database url of the form
jdbc:subprotocol :subname
driverClassName
- the fully qualified class name of the driver classReturns: a new Sql instance with a connection
newInstance
public static Sql newInstance (Map args)
Creates a new Sql instance given parameters in a Map.
Recognized keys for the Map include:
driverClassName the fully qualified class name of the driver class
driver a synonym for driverClassName
url a database url of the form: jdbc:subprotocol :subname
user the database user on whose behalf the connection is being made
password the user's password
properties a list of arbitrary string tag/value pairs as connection arguments;
normally at least a "user" and "password" property should be included
other any of the public setter methods of this class may be used with property notation
e.g. cacheStatements: true, resultSetConcurrency: ResultSet.CONCUR_READ_ONLY
Of these, 'url
' is required. Others may be needed depending on your database.
If 'properties
' is supplied, neither 'user
' nor 'password
' should be supplied.
If one of 'user
' or 'password
' is supplied, both should be supplied.
Example usage:
import groovy.sql.Sql
import static java.sql.ResultSet.*
def sql = Sql.newInstance(
url:'jdbc:hsqldb:mem:testDB',
user:'sa',
password:'',
driver:'org.hsqldb.jdbcDriver',
cacheStatements: true,
resultSetConcurrency: CONCUR_READ_ONLY
)
throws: SQLException if a database access error occurs throws: ClassNotFoundException if the class cannot be found or loaded
Parameters: args
- a Map contain further argumentsReturns: a new Sql instance with a connection
nullify
protected String nullify (String sql)
Hook to allow derived classes to override null handling.
Default behavior is to replace ?'"? references with NULLish
Parameters: sql
- the SQL statementReturns: the modified SQL String
out
public static OutParameter out (int type)
Create a new OutParameter
Parameters: type
- the JDBC data type.Returns: an OutParameter
query
public void query (String sql, Closure closure)
query
public void query (String sql, List params, Closure closure)
Performs the given SQL query, which should return a single
ResultSet
object. The given closure is called
with the ResultSet
as its argument.
The query may contain placeholder question marks which match the given list of parameters.
Example usage:
sql.query('select * from PERSON where lastname like ?', ['%a%']) { ResultSet rs ->
while (rs.next()) println rs.getString('lastname')
}
This method supports named and named ordinal parameters.
See the class Javadoc for more details.
All resources including the ResultSet are closed automatically
after the closure is called.throws: SQLException if a database access error occurs
Parameters: sql
- the sql statementparams
- a list of parametersclosure
- called for each row with a GroovyResultSet
query
public void query (GString gstring, Closure closure)
Performs the given SQL query, which should return a single
ResultSet
object. The given closure is called
with the ResultSet
as its argument.
The query may contain GString expressions.
Example usage:
def location = 25
sql.query "select * from PERSON where location_id < $location", { ResultSet rs ->
while (rs.next()) println rs.getString('firstname')
}
All resources including the ResultSet are closed automatically
after the closure is called.throws: SQLException if a database access error occurs
Parameters: gstring
- a GString containing the SQL query with embedded paramsclosure
- called for each row with a GroovyResultSetSee Also: expand(Object)
resultSet
public static ResultSetOutParameter resultSet (int type)
Create a new ResultSetOutParameter
Parameters: type
- the JDBC data type.Returns: a ResultSetOutParameter
rollback
public void rollback ()
If this SQL object was created with a Connection then this method rolls back
the connection. If this SQL object was created from a DataSource then
this method does nothing.throws: SQLException if a database access error occurs
rows
public List rows (String sql)
rows
public List rows (String sql, Closure metaClosure)
rows
public List rows (String sql, List params)
Performs the given SQL query and return the rows of the result set.
The query may contain placeholder question marks which match the given list of parameters.
Example usage:
def ans = sql.rows("select * from PERSON where lastname like ?", ['%a%'])
println "Found ${ans.size()} rows"
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: sql
- the SQL statementparams
- a list of parametersReturns: a list of GroovyRowResult objects
rows
public List rows (String sql, Object[] params)
rows
public List rows (String sql, List params, Closure metaClosure)
rows
public List rows (GString gstring)
Performs the given SQL query and return the rows of the result set.
The query may contain GString expressions.
Example usage:
def location = 25
def ans = sql.rows("select * from PERSON where location_id < $location")
println "Found ${ans.size()} rows"
Resource handling is performed automatically where appropriate.throws: SQLException if a database access error occurs
Parameters: gstring
- a GString containing the SQL query with embedded paramsReturns: a list of GroovyRowResult objects See Also: expand(Object)
rows
public List rows (GString gstring, Closure metaClosure)
setCacheNamedQueries
public void setCacheNamedQueries (boolean cacheNamedQueries)
setCacheStatements
public void setCacheStatements (boolean cacheStatements)
Returns: boolean true if cache is enabled (default is false)
setEnableNamedQueries
public void setEnableNamedQueries (boolean enableNamedQueries)
setInternalConnection
protected void setInternalConnection (Connection conn)
setObject
protected void setObject (PreparedStatement statement, int i, Object value)
setParameters
protected void setParameters (List params, PreparedStatement statement)
setResultSetConcurrency
public void setResultSetConcurrency (int resultSetConcurrency)
Sets the resultSetConcurrency for statements created using the connection.
May cause SQLFeatureNotSupportedException exceptions to occur if the
underlying database doesn't support the requested concurrency value.
Parameters: resultSetConcurrency
- one of the following ResultSet
constants:
ResultSet.CONCUR_READ_ONLY
or
ResultSet.CONCUR_UPDATABLE
Since: 1.5.2
setResultSetHoldability
public void setResultSetHoldability (int resultSetHoldability)
Sets the resultSetHoldability for statements created using the connection.
May cause SQLFeatureNotSupportedException exceptions to occur if the
underlying database doesn't support the requested holdability value.
Parameters: resultSetHoldability
- one of the following ResultSet
constants:
ResultSet.HOLD_CURSORS_OVER_COMMIT
or
ResultSet.CLOSE_CURSORS_AT_COMMIT
Since: 1.5.2
setResultSetType
public void setResultSetType (int resultSetType)
Sets the resultSetType for statements created using the connection.
May cause SQLFeatureNotSupportedException exceptions to occur if the
underlying database doesn't support the requested type value.
Parameters: resultSetType
- one of the following ResultSet
constants:
ResultSet.TYPE_FORWARD_ONLY
,
ResultSet.TYPE_SCROLL_INSENSITIVE
, or
ResultSet.TYPE_SCROLL_SENSITIVE
Since: 1.5.2
withBatch
public int[] withBatch (Closure closure)
withBatch
public int[] withBatch (int batchSize, Closure closure)
withStatement
public void withStatement (Closure configureStatement)
withTransaction
public void withTransaction (Closure closure)
Performs the closure within a transaction using a cached connection.
If the closure takes a single argument, it will be called
with the connection, otherwise it will be called with no arguments.throws: SQLException if a database error occurs
Parameters: closure
- the given closure
Copyright © 2003-2010 The Codehaus. All rights reserved.