5

java 1.4 Sql server 2000

i am taking input of sql query (for validation of field value against values retrieved by executing sql query) from admin user which will be stored in database and later i will executing sql query corresponding to field.Before inserting sql query in database i want to validate its syntax in java code.

Fields         Sql Query

stateCode      select statecode from states
district code  select district code from districts
Maddy.Shik
  • 6,411
  • 17
  • 65
  • 98

6 Answers6

8

Create a PreparedStatement with the query string; if this works, the query string is ok (but nothing is executed yet)

Erich Kitzmueller
  • 35,434
  • 6
  • 77
  • 99
6

dont think there is any (easy) way to validate sql

Sql syntax is complex and allows for alot of different ways to enter a statement.

Think you best shot would be to just execute the sql statent and if you have a SQl exception see if its a bad syntax thats causing it.

you can prepend some sql to avoid from actually executing the query

in sybase it would be SET NOEXEC ON

Peter
  • 5,730
  • 19
  • 23
3

Why would you let them enter whole sql-statements?

Just provide to fields and let them enter either the statecode or the districtcode.

Then check if the entered value is a number. And run the appropriate query with the entered value.

jitter
  • 52,771
  • 11
  • 107
  • 123
  • its not specific.table name and column can be anything with some conditions or joins depending upon type of field. – Maddy.Shik Oct 21 '09 at 09:10
2

A possible solution would could be to get the explain plan of the query, if it manages to explain the query I guess it must be valid. Down side is that it won't like parametrised queries.

Gareth Davis
  • 27,264
  • 12
  • 72
  • 105
2

You could do SET FMTONLY ON and then execute the query and see if it works. Just remember to do SET FMTONLY OFF in a finally block, since it's a connection-level setting.

erikkallen
  • 32,795
  • 13
  • 83
  • 117
0

You may need a full SQL Parser to do such a vendor-specific offline SQL syntax check.

Take a look at this demo which including some Java and C# code:

http://www.dpriver.com/blog/list-of-demos-illustrate-how-to-use-general-sql-parser/vendor-specific-offline-sql-syntax-check/

James
  • 51
  • 3