Here you are:
import groovy.sql.Sql
sql = Sql.newInstance("jdbc:hsqldb:mem", "sa","", "org.hsqldb.jdbcDriver")
sql.execute('create table TableA (FirstName varchar(40), LastName varchar(40))')
sql.execute('INSERT INTO TableA (FirstName,LastName) values (?,?)',\['Stan','Juka'\])
sql.eachRow('select * from TableA') {
println "TableA row: ${it.firstName}, ${it.lastName}"
}
|
The output should be:
TableA row: Stan, Juka |
Why the INSERT in this code fails?
... values = "'Stan','Juka'" insertSQL = "INSERT INTO TableA (FirstName,LastName) values ($values)" sql.execute(insertSQL) |
Because the insertSQL is a GString. if you make it a String like this
String insertSQL = "INSERT INTO TableA (FirstName,LastName) values ($values)" |
it will work. Or you can do it like this:
firstName = 'Stan' lastName = 'Juka' insertSQL = "INSERT INTO TableA (FirstName,LastName) values ($firstName,$lastName)" |
In the last code snippet, GSQL will automatically create a prepared statement for you and run it.
I modified the code to get it to work with Oracle and for readability.
The Sql.newInstance will connect to an Oracle database SID called XE installed on localhost
at port 1521. The database user is "username" and the password is "password".
In order to get this to work you will have to install the the latest jdbc.jar file from Oracle's website. You need to install the .jar file into the
lib directory in your GROOVY_HOME directory:
import groovy.sql.Sql
sql = Sql.newInstance( "jdbc:oracle:thin:@localhost:1521:XE", "username", "password", "oracle.jdbc.OracleDriver" )
createTable = 'CREATE TABLE TableA ( FirstName varchar2( 40 ), LastName varchar2( 40 ) )'
insertIntoTable = 'INSERT INTO TableA ( FirstName, LastName ) values ( ?, ? )'
selectStatement = 'SELECT * FROM TableA'
sql.execute( createTable )
sql.execute( insertIntoTable, [ 'Bill', 'Lyons' ] )
// the eachRow method is an Iterator
sql.eachRow( selectStatement ) {
println "TableA row: ${ it.firstName }, ${ it.lastName }" }
}
|
The code does the following:
1. Creates TableA in username's schema
2. Inserts a row into TableA
3. Performs a SELECT * FROM TableA;
4. Returns "TableA row: Bill Lyons"