有没有可以验证SQL语法的Java库?

时间:2020-03-06 14:48:13  来源:igfitidea点击:

我不确定这是否存在,所以我想我会借鉴其他人的智慧。

我想知道是否有任何Java库可用于验证SQL查询的语法。我知道与常见的SQL规范有很多差异,因此它可能仅适用于SQL:2006之类的东西,但这当然足够了。

我的目标是将其用于单元测试,而无需尝试对数据库执行。我知道它用途有限,但仍然有用。

谢谢!

解决方案

我认为没有这样的库。 SQL语法有太多派生。

一种可能的解决方案是使用开源纯Java DBMS的一部分,例如SmallSQL。在此项目中,我们可以创建SQLParser的实例。可以很容易地删除所需的连接参考。

我们可能可以从HSQL(Java和开放源代码)中提取解析代码。

也许我们可以使用Antlr,它具有许多SQL语法和Java库,以及各种Java IDE的插件。

或者按照建议使用开放式源代码SQL实用程序(如SQuirreL SQL Client)的解析器。

Apache Derby是一个完全用Java实现的开源SQL数据库,可以通过Apache License 2.0版获得。它以前称为IBM Cloudscape。

我们可以尝试重用来自org.apache.derby.impl.sql的解析代码。

SQL4J是用Java编写的SQL解析器。

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

尝试使用JSQL解析器。

除了验证之外,我们还可以获得查询的有意义的表示形式。
例如,这使我们仅接受"某些"命令;操纵
查询,"整理"它,等等。