Я пишу инструмент в Java, который отправляет операторы в базу данных, которые позже запускаются. Я использую JDBC для подключения к базе данных. База данных - это Oracle 10g.Использование парсера базы данных Oracle из Java с использованием JDBC
Прежде чем инструкции будут записаны в базу данных, я хочу проанализировать их, чтобы проверить, когда они будут работать позже, и проблем не будет. Я изучил использование ANTLR-решения для этого, поскольку есть доступные грамматики, но, конечно же, если у меня есть соединение с базой данных, должен быть способ использовать базы данных, созданные в парсере.
Так по существу мой вопрос:
Есть ли способ, с помощью JDBC Я могу сделать вызов парсера базы данных передавая ей оператор SQL и возвратит мне какую-то обратную связь, говоря мне, если она была успешной или любые сообщения об ошибках?
Любая помощь с благодарностью, Большое спасибо.
Edit:
Использование connection.prepareStatement, кажется, не работает, например, это выводит разобранный успешно!
String statement = "WHERE DISTINCT SELECT";
Connection connection;
try {
connection = this.controller.getDataSource().getConnection();
connection.prepareStatement(statement);
connection.close();
mainPanel.setPositiveText("Parsed Successfully!");
} catch (Exception e) {
mainPanel.setNegativeText("ERROR: " + e.getMessage());
return;
}
soultion я использовал следующим образом:
String statement = "DECLARE "
+ "myNumber NUMBER; "
+ "BEGIN "
+ "myNumber := SYS.dbms_sql.open_cursor; "
+ "SYS.DBMS_SQL.PARSE(myNumber, '" + text + "', SYS.DBMS_SQL.NATIVE); "
+ "END;";
Connection connection;
try {
connection = this.controller.getDataSource().getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(statement);
preparedStatement.execute();
connection.close();
mainPanel.setPositiveText("Parsed Successfully!");
} catch (Exception e) {
mainPanel.setNegativeText("ERROR: " + e.getMessage());
System.out.println(e.getMessage());
return;
}
Заявление execQuery или execUpdate методы будут генерировать исключение. –