views:

1619

answers:

6

I'm not sure if this even exists or not, so I figured I would tap the wisdom of others..

I was wondering if there are any Java libraries out there that can be used to validate a SQL query's syntax. I know that there are many deviations from common SQL spec, so it would probably only work against something like SQL:2006, but that would certainly suffice.

My goal is to use this for unit-testing purposes without needing to attempt the execution against the DB. I know it's of limited use, but it would still be useful.

Thanks!

+3  A: 

I don't think there are such libraries. The SQL syntax has too many derivatives.

A possible solution would be to use parts of an open source pure Java DBMS like SmallSQL. In this project you can create an instance of the SQLParser. The needed references to the connection can be removed very easily.

Horcrux7
Are you by any chance a SmallSQL developer?
Constantin
Yes, I am one of the developers.
Horcrux7
A: 

You might be able to extract the parsing code out from HSQL, which is java and open source.

Tim Howland
+2  A: 

Perhaps you can use Antlr, it has a number of SQL grammars.

Or as advised, use the parser of open source SQL utilities like SQuirreL SQL Client.

PhiLho
A: 

Apache Derby is an open source SQL database implemented entirely in Java and available under the Apache License, Version 2.0. It was formerly known as IBM Cloudscape.

You may try to reuse it's parsing code from org.apache.derby.impl.sql.

Constantin
+2  A: 

SQL4J is a SQL-parser written in Java.

http://www.cs.toronto.edu/~jglu/sql4j/index.htm

Tom
A: 

Try http://jsqlparser.sourceforge.net/

Kevin