可能重複:
SQL parser library for Java解析器解析SQL查詢並返回列名的,並在Java中相應的表名
我需要一個分析器,它應該回到我的列名其格式對應的表格名稱
column_name表名
優選的一個Java庫,可以使實現更容易,因爲我不想進入SQL語法分析的所有細微差別。
問候,
可能重複:
SQL parser library for Java解析器解析SQL查詢並返回列名的,並在Java中相應的表名
我需要一個分析器,它應該回到我的列名其格式對應的表格名稱
column_name表名
優選的一個Java庫,可以使實現更容易,因爲我不想進入SQL語法分析的所有細微差別。
問候,
好問題! 我剛纔已經進行了一些谷歌搜索,發現以下有趣的引用:
http://www.gibello.com/code/zql/
http://www.sqlparser.com/sql-parser-java.php
我希望這有助於。
更豐富的功能SQL分析器,它允許其他方言是阿里巴巴的德魯伊:https://github.com/alibaba/druid/tree/master/src/main/java/com/alibaba/druid/sql。 – btiernay 2017-03-19 22:03:10
如果你有到數據庫的連接,你可以做,用事先準備好的聲明:
String sql = "....";
PreparedStatement pstmt = connection.prepareStatement(sql);
ResultSetMetaData meta = pstmt.getMetaData();
然後你可以使用ResultSetMetaData.getColumnCount()
和getColumnName(int)
檢索列名。如果您的JDBC驅動程序支持的話,你可以使用getTableName(int)
請注意,並非所有的驅動程序支持實際執行語句之前獲取元數據甚至可以在基礎表的名稱,你需要測試與您正在使用的一個。
如果SQL查詢中有多個列,該怎麼辦?他們是否與CRLF分隔? – 2011-06-15 06:39:22
有已經[詢問有關這個主題的一個問題(http://stackoverflow.com/questions/5881893/need-java-api-to-parse-sql-statements),爲什麼你再問一樣嗎? – 2011-06-15 06:40:45
@ vineet這個問題放在較低的要求之前。我已經檢出了ZQL庫,並且實際上在它獲得了匹配列名與表名的新要求時在它上面創建了一個應用程序。目的是讓舊問題保持原樣,因爲問題以最好的方式得到了回答。把這個稍微先進的要求放在另一個問題上,而不是別的。 – user727272 2011-06-15 06:54:41