2013-08-30 150 views
0

我的java应用程序的一个主要需求是将sql查询存储在数据库中以供稍后使用。 由于我的应用程序连接到像MSSQL,HSQL,Oracle等不同的数据库类型,并且由于每种类型都有自己的sql脚本格式,所以我需要一个解析器/转换器来将我的sql脚本解析为一种统一的语言(XML),另一种方式。将SQL脚本转换为XML格式

所以像存储脚本时, 'SELECT * FROM [项目] [DBO] .tableName。'(MSSQL),它会被解析到让说:

<Select> 
<fields>*</fields> 
<tableSource>tableName</tableSource> 

我的问题是,有没有存在免费下载的转换器用于支持不同类型的DB语法的此任务,或者如果不支持,则这是实现此解析器以覆盖大部分语法的最有效方式。

+0

你可能想看看在[JPA](http://en.wikipedia.org/wiki/Java_Persistence_API)和实例[休眠](HTTP ://en.wikipedia.org/wiki/Hibernate_%28Java%29)。 - 使用Hibernate可以使用Hibernate查询语言(HQL),然后Hibernate将在运行时将其转换为所使用的DBMS的相应SQL语句。 - 也许只是看看Hibernate的[SQL Dialects](http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/dialect/package-summary.html)。 – JimmyB

+0

@HannoBinder会研究它并让你知道。感谢您的回复 – jadkachmar

回答

1

关于使用这种结构是什么

<sqls> 
<sql> 
<db-type name="mysql" /> 
<sql-query><[CDTATA[select * form .....]]></sql-query> 
</sql> 
<sql> 
<db-type name="oracle" /> 
<sql-query><[CDTATA[select * form .....]]></sql-query> 
</sql> 
<sqls> 
+0

不确定它是否是最有效的解决方案。 你要我为我处理的每种类型的db生成适当的查询。所以每次我决定添加一个新的数据库系统时,我都需要用新的db-type来更新旧的XML,这是一个大小限制的问题(考虑一个具有别名,连接,函数等的大型查询) – jadkachmar