我正在使用 Eclipse 4.5.1 Mars,并且 Data Tools Project 已经集成在这个发行版中。我正在尝试使用数据工具项目的 SQL 查询解析器来解析 SQL 文件。我创建了一个新的 Java 项目、一个包和一个类,并使用了这里给出的代码示例:http: //dev.eclipse.org/mhonarc/lists/dtp-sqldevtools-dev/msg00074.html
但是我无法解决使用解析器所需的类。例如,在代码的最开头,您会发现以下语句: SQLQueryParserManager parserManager = SQLQueryParserManagerProvider SQLQueryParserManager 显示错误并要求“导入 'SQLQueryParserManager ' (org.eclipse.datatools.sqltools.parsers.sql.query)” - 我这样做了。在 java 文件“import org.eclipse.datatools.sqltools.parsers.sql.query.SQLQueryParserManager;”顶部的 import-statement 部分 是相关的参考。但是,它一直告诉我“导入 org.eclipse”无法解决。
我不知道如何解决它了。我尝试下载DTP并将插件复制到Mars的插件文件夹中,但也没有任何变化。
这是我尝试运行的 .java 文件。这很简单,但由于某些原因仍然无法解决所需的类。这些课程应该是eclipse Mars imo的一部分。我尝试了不同的 Eclipse 下载,但都一样。请帮忙
// imports needed
import java.util.Iterator;
import java.util.List;
import org.eclipse.datatools.sqltools.parsers.sql.query.src.org.eclipse.datatools.sqltools.parsers.sql.query.SQLQueryParseResult;
import org.eclipse.datatools.sqltools.parsers.sql.query.src.org.eclipse.datatools.sqltools.parsers.sql.query.SQLQueryParserManager;
import org.eclipse.datatools.sqltools.parsers.sql.query.src.org.eclipse.datatools.sqltools.parsers.sql.query.SQLQueryParserManagerProvider;
import org.eclipse.datatools.sqltools.parsers.sql.src.org.eclipse.datatools.sqltools.parsers.sql.SQLParseErrorInfo;
import org.eclipse.datatools.sqltools.parsers.sql.src.org.eclipse.datatools.sqltools.parsers.sql.SQLParserException;
import org.eclipse.datatools.sqltools.parsers.sql.src.org.eclipse.datatools.sqltools.parsers.sql.SQLParserInternalException;
class LPGParserExample {
public static void main(String args[]) {
try {
// Create an instance the Parser Manager
// SQLQueryParserManagerProvider.getInstance().getParserManager
// returns the best compliant SQLQueryParserManager
// supporting the SQL dialect of the database described by the given
// database product information. In the code below null is passed
// for both the database and version
// in which case a generic parser is returned
SQLQueryParserManager parserManager = SQLQueryParserManagerProvider
.getInstance().getParserManager(null, null);
// Sample query
String sql = "SELECT * FROM TABLE1";
// Parse
SQLQueryParseResult parseResult = parserManager.parseQuery(sql);
// Get the Query Model object from the result
QueryStatement resultObject = parseResult.getQueryStatement();
// Get the SQL text
String parsedSQL = resultObject.getSQL();
System.out.println(parsedSQL);
} catch (SQLParserException spe) {
// handle the syntax error
System.out.println(spe.getMessage());
List syntacticErrors = spe.getErrorInfoList();
Iterator itr = syntacticErrors.iterator();
while (itr.hasNext()) {
SQLParseErrorInfo errorInfo = (SQLParseErrorInfo) itr.next();
// Example usage of the SQLParseErrorInfo object
// the error message
String errorMessage = errorInfo.getParserErrorMessage();
// the line numbers of error
int errorLine = errorInfo.getLineNumberStart();
int errorColumn = errorInfo.getColumnNumberStart();
}
} catch (SQLParserInternalException spie) {
// handle the exception
System.out.println(spie.getMessage());
}
}
}