3

SQL ステートメントを解析し、列名とテーブル名を取得する必要があります。サンプルコードで試してみました。テーブル名を取得しましたが、各テーブルの列名を取得するのに苦労しています。

4

5 に答える 5

3

本当にこれを行う必要がある場合は、ANTLRのような適切なパーサー ツールキットの使用を検討する必要があります。これは非常に急な学習曲線ですが、他の人が既に構築した SQL の文法があります。

独自のパーサーを手動でクランクアップすると、最も基本的なクエリ以外のバグの混乱が発生します。

于 2013-05-24T11:27:58.610 に答える
2

必要なのは SQL パーサーです。

JSQLParserまたはZQLを試すことができます。

あなたがやろうとしているのと同じことのために、私は両方をうまく使いました。

sqlparserも試すことができます。ただし、これは商用であり、使用した経験はありません。

于 2013-05-24T12:16:31.010 に答える
1

オブジェクトを持っている場合は、起動されたクエリResultSetを読み取ることができます。Column names and Table Names

to を使用ResultSetMetaDataget MetaDataquery(テーブル名や列名など)。

于 2013-05-24T11:35:39.340 に答える
0

Checkout Foundation パーサーhttp://foundationdb.github.io/sql-parser/

また、JSQLParser は SourceForge にはありませんが、https://github.com/JSQLParser/JSqlParser/wikiで維持されていることに注意してください。

于 2014-05-03T00:00:07.300 に答える
0

SQL 文法用のパーサーを作成する必要があります。ANTLR ではこのようなパーサーを作成できますが、文法を作成するのは非常に難しい場合があります。

ANTLR の既存の文法のリストは次のとおりですhttp://www.antlr3.org/grammar/list.html

これには、mysql、oracle SQL の文法が含まれています。

于 2013-05-24T11:32:27.130 に答える