From 3e0cc4b7524e673a36fa791e7b4ca8f58874f61e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Fri, 18 May 2012 15:11:59 +0800 Subject: [PATCH] sql parser --- .../java/com/alibaba/druid/sql/SQLUtils.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/SQLUtils.java b/src/main/java/com/alibaba/druid/sql/SQLUtils.java index 2f3b008c9a..81c0dab8c8 100644 --- a/src/main/java/com/alibaba/druid/sql/SQLUtils.java +++ b/src/main/java/com/alibaba/druid/sql/SQLUtils.java @@ -75,7 +75,7 @@ public class SQLUtils { String sql = out.toString(); return sql; } - + public static String toSQLServerString(SQLObject sqlObject) { StringBuilder out = new StringBuilder(); sqlObject.accept(new SQLServerOutputVisitor(out)); @@ -87,7 +87,7 @@ public class SQLUtils { public static String formatPGSql(String sql) { return format(sql, JdbcUtils.POSTGRESQL); } - + public static SQLExpr toSQLExpr(String sql) { Lexer lexer = new Lexer(sql); lexer.nextToken(); @@ -101,7 +101,7 @@ public class SQLUtils { return expr; } - + public static String format(String sql, String dbType) { SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); List statementList = parser.parseStatementList(); @@ -115,8 +115,9 @@ public class SQLUtils { return out.toString(); } - - public static SQLASTOutputVisitor createFormatOutputVisitor(Appendable out, List statementList, String dbType) { + + public static SQLASTOutputVisitor createFormatOutputVisitor(Appendable out, List statementList, + String dbType) { if (JdbcUtils.ORACLE.equals(dbType)) { if (statementList.size() == 1) { return new OracleOutputVisitor(out, false); @@ -124,19 +125,24 @@ public class SQLUtils { return new OracleOutputVisitor(out, true); } } - + if (JdbcUtils.MYSQL.equals(dbType)) { return new MySqlOutputVisitor(out); } - + if (JdbcUtils.POSTGRESQL.equals(dbType)) { return new PGOutputVisitor(out); } - + if (JdbcUtils.SQL_SERVER.equals(dbType)) { return new SQLServerOutputVisitor(out); } - + return new SQLASTOutputVisitor(out); } + + public static List parseStatements(String sql, String dbType) { + SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType); + return parser.parseStatementList(); + } }