ひがやすを技術ブログ

電通国際情報サービスのプログラマ

SQLの解析

SQLの解析は、SqlParserが行い、解析結果は、Nodeのツリーになってます。


public interface Node {
public int getChildSize();
public Node getChild(int index);
public void addChild(Node node);
public void accept(QueryContext ctx);
}

public interface SqlParser {
public Node parse(String sql);
}
Nodeの具象クラスには、SqlNode(SQLの断片)、
BindVariableNode(バインド変数用)、IfNode(if文)、
BlockNode(BEGINからENDコメントまでを管理)などがあります。
実際の使い方は、

SqlParser parser = new SqlParserImpl();
Node root = parser.parse(sql);
QueryContext ctx = new QueryContextImpl();
//引数の設定
ctx.addArg(...);
root.accept(ctx);
//QueryContextからSQL文とバインド変数を取り出しS2JDBCで実行
のような感じです。id:masataka_kさん。