Feeds

Groovy way to MySQL

Get your Groove on

3 Big data security analytics techniques

As with Java, Groovy makes use of JDBC to interact with the database. So we'll start off with some simple code to connect to and read from this database. Enter the following into a file called MySQL.groovy:

import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:mysql://192.168.16.175:3306/pers", "pan","regdev", "com.mysql.jdbc.Driver")
sql.eachRow("select * from users") {println "User name ${it.user_name}"}

The first thing to note is the import statement and the creation of the Sql object. The argument to the newInstance method broadly encapsulates the information needed to create a standard Java JDBC connection: database URL, user name, password, and JDBC driver class name.

Once we've got an Sql object we can use it to interact with the database using standard SQL syntax. In this example we are simply performing a basic select query to grab all of the data in the user's table. So far, not very different from Java, the Groovy code is less verbose for sure, but not so different to what we're used to. It's what follows that shows us a first taste of Groovy at work.

The eachRow method iterates through the rows returned by the select query, and this is combined with the closure code: {println "User name ${it.user_name}"}

Closures are blocks of code that are treated as objects and can be passed around, stored, or executed. In this case we are creating a block of code that is passed to the eachRow method, which then executes the function by binding the value of each row of data to the "it" variable. In this way we can access all of the column names in the returned rows directly. If we save this code as MySQL.groovy we can then execute it from the command line by typing:

groovy MySQL.groovy

which will return:

User name tom
User name dick
User name harry
User name george

This combination of SQL, easy iteration and the use of closures means it's possible to write extremely powerful but succinct scripts to process data from MySQL and other databases. The eachRow method isn't the only way we can access the data using the Sql class. As an alternative we can grab the rows and put them into a List as follows:

List u=sql.rows('SELECT * FROM users')
u.each {println it.user_id}

Again, we have an iteration and a closure providing fast access to processing the data.

However, the Sql class also provides a means to perform a wide variety of SQL operations, including INSERT, DELETE, UPDATE and various DDL activities.

We can use Groovy's triple quoted strings to encode SQL queries which we execute directly. For example:

sql.execute '''
  INSERT INTO users (user_name, email, user_id) 
  VALUES ('fred','fred@fred.com',99);'''
sql.execute '''
  DELETE FROM users 
  WHERE user_id>20
  '''

So far we've been using the Sql class to provide access to the database. In the next part of this tutorial we'll be looking at a different mechanism and at some practical examples of using Groovy scripting with MySQL to perform some common DBA activities. ®

Top three mobile application threats

More from The Register

next story
This time it's 'Personal': new Office 365 sub covers just two devices
Redmond also brings Office into Google's back yard
Inside the Hekaton: SQL Server 2014's database engine deconstructed
Nadella's database sqares the circle of cheap memory vs speed
Oh no, Joe: WinPhone users already griping over 8.1 mega-update
Hang on. Which bit of Developer Preview don't you understand?
Microsoft lobs pre-release Windows Phone 8.1 at devs who dare
App makers can load it before anyone else, but if they do they're stuck with it
Half of Twitter's 'active users' are SILENT STALKERS
Nearly 50% have NEVER tweeted a word
Internet-of-stuff startup dumps NoSQL for ... SQL?
NoSQL taste great at first but lacks proper nutrients, says startup cloud whiz
IRS boss on XP migration: 'Classic fix the airplane while you're flying it attempt'
Plus: Condoleezza Rice at Dropbox 'maybe she can find ... weapons of mass destruction'
Ditch the sync, paddle in the Streem: Upstart offers syncless sharing
Upload, delete and carry on sharing afterwards?
New Facebook phone app allows you to stalk your mates
Nearby Friends feature goes live in a few weeks
prev story

Whitepapers

Top three mobile application threats
Learn about three of the top mobile application security threats facing businesses today and recommendations on how to mitigate the risk.
Combat fraud and increase customer satisfaction
Based on their experience using HP ArcSight Enterprise Security Manager for IT security operations, Finansbank moved to HP ArcSight ESM for fraud management.
The benefits of software based PBX
Why you should break free from your proprietary PBX and how to leverage your existing server hardware.
Five 3D headsets to be won!
We were so impressed by the Durovis Dive headset we’ve asked the company to give some away to Reg readers.
SANS - Survey on application security programs
In this whitepaper learn about the state of application security programs and practices of 488 surveyed respondents, and discover how mature and effective these programs are.