2013-08-30 185 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